为什么C语言中整型变量下限绝对值比上限大1?
來源:互聯網 2010-01-22 19:12:28 評論
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
問題描述:
C语言中int型变量的取值范围是:-32768~32767
为什么最小值的绝对值比最大值大1?
谢谢!
參考答案:
C语言中int型是以补码的形式存在的。
正数是其自身,0~0111 1111 1111 1111=0~32767
负数则为其正数的取反+1:
-1 = -0000 0000 0000 0001=1111 1111 1111 1110 +1=1111 1111 1111 1111
最小的负数为:
-32768=-1000 0000 0000 0000 = 0111 1111 1111 1111 +1 =1000 0000 0000 0000
以补数形式表示,可以将减法和加法协调统一。
5+(-1)= 0000 0000 0000 0101 + 1111 1111 1111 1111 1111
= 1 0000 0000 0000 0100=4
最高位溢出
[b]分类:[/b] 电脑/网络 >> 程序设计 >> 其他编程语言[br][b]问题描述:[/b][br]C语言中int型变量的取值范围是:-32768~32767
为什么最小值的绝对值比最大值大1?
谢谢![br][b]参考答案:[/b][br]C语言中int型是以补码的形式存在的。
正数是其自身,0~0111 1111 1111 1111=0~32767
负数则为其正数的取反+1:
-1 = -0000 0000 0000 0001=1111 1111 1111 1110 +1=1111 1111 1111 1111
最小的负数为:
-32768=-1000 0000 0000 0000 = 0111 1111 1111 1111 +1 =1000 0000 0000 0000
以补数形式表示,可以将减法和加法协调统一。
5+(-1)= 0000 0000 0000 0101 + 1111 1111 1111 1111 1111
= 1 0000 0000 0000 0100=4
最高位溢出