首页 > 编程知识 正文

C int型的数到底最大值是多少,一个数的最大因数是多少

时间:2023-05-05 05:06:09 阅读:190176 作者:836

int的范围是-2的31次方到2的31次方-1。

为什么是31次方呢:因为我的电脑是4个字节表示int,一个字节占8位。所以就32位,-1是因为int是signed有符号位的,所以就31。为什么正数要31-1呢:个人理解:(假设4个1,如果直接2的次方是16,但它不能表示16,16是范围的意思,它的意思是能表示16个数:0~15吧),所有31次方就要-1啦。负数为什么不要-1呢(不太理解计组的知识,懂的大佬告诉我):参考百度

第一种解析: int 是有符号整bai型,在C语言学习中一般认为int为32位,最高位为du符号位:如zhi果数大于0,则最高位为dao0,如果数小于0,则最高位为1。在判断数值范围时,不用考虑负数采用补码形式存储,因为补码和原码是一一对应的。当最高位是1,即为负数,后面最多还有31个1,而这31个1的加权值之和为231-1,而负数最高位也为1,该位在再次进位时仍满足负数的条件,即可将最高位看成数值位,故最小值为-232,最大值整数最高位必须一值为1,且原码等于补码,这就限制了整数的最大值31位的1相加,之和为2^31-1。

第二种解析:在计算机内部,数值为负的整数采用补码进行表示。而负数的补码书原码的每一位取反后+1.故int32位表示的范围是-2的31次方到2的31次方-1

另附一张数据的位数图:
问题二:double型浮点数能精确到多少位小数?或者,这个问题本身值得商榷?
既然double是浮点数,它的小数点的位置是“浮动”的,所以很难说double类型能精确到小数点后面几位。通常这个关于精度的问题都是通过它能表示的有效数字(十进制)的位数来表示的。遵循IEEE标准的8字节(64位)的double能表示的有效数字的位数是:15 ~ 16位

问题三:double型浮点数最大正数值和最小正数值分别是多少(不必特别精确)?
-21024~21024,即-1.7910^308~ +1.7910^308

参考:http://www.mamicode.com/info-detail-167231.html

https://blog.csdn.net/richenyunqi/article/details/80919462

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。