深入浅出:举个例子解读原码、反码和补码 (2)

显而易见了:int8 的可表示范围是 [-128, 127],所以可以被赋值为 -128。而 (-128) / (-1) = 128 显然超过了该表示范围,+128 用有符号整数表示需要 9 位,表示为 0 1000 0000,最高位的 0 已经溢出,所以丢弃,导致结果是 1000 0000,即 -128。

所以这段代码的输出结果就是 -128 啦~

总结

int8 表示有符号 8 位整数,它的可表示范围是 [-128, 127]

计算机内部使用补码方式表示负数

补码解决了 +0 和 -0 并存的问题,并省下 -0 的表示方法,多表示了一个最低数 -128

补码使得所有整数集都能使用同一套加法规则

如果发生溢出,多出的高位将被截取

如果你觉得文章写得不错,请帮我两个小忙:

点赞并关注我,让这篇文章被更多人看到

关注公众号「编程拯救世界」,公众号专注于编程基础与服务端研发,你将第一时间获得新文章的推送~

原创不易,多多支持~谢谢大家!

深入浅出:举个例子解读原码、反码和补码

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzjfzg.html