c++ 中有+0和-0区别吗?为什么short int 最小值是-2^15?最高位表示符号位,两个字节最小值:1111

c++ 中有+0和-0区别吗?
为什么short int 最小值是-2^15?最高位表示符号位,两个字节最小值:1111 1111 1111 1111,最大值是0111 1111 1111 1111,所以取值范围是 -32767 到32767,
真柳叶雅彦 1年前 已收到1个回答 举报

新源nn 幼苗

共回答了19个问题采纳率:94.7% 举报

负数用补码存储
负数的补码等于其绝对值的二进制取反加上1
比如-1
其绝对值1=0000 0000 0000 0001
取反 1111 1111 1111 1110
加1 1111 1111 1111 1111
所以-1是1111 1111 1111 1111不是最小值
最大值是0111 1111 1111 1111(32767)
最小值是-32768
绝对值 1000 0000 0000 0000(超过了最大值32767)
取反 0111 1111 1111 1111
加1 1000 0000 0000 0000
最小值是1000 0000 0000 0000
采用补码是为了方便做加法和减法,减法就是加上相反数
-1和+1相加产生的最高进位被舍弃,
同时0的表示统一为0000 0000 0000 0000

1年前

7
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.036 s. - webmaster@yulucn.com