关于补码是否可以改变值的正负?

对于补码一直有一个疑问,原码的符号位在转换成补码加入运算的时候,正负值是如何保持正确的呢?
如果是八位
用 0100 0101
加上 0100 0000
算得是 1000 0101
这算是改变了数值原先的正负吗???

阅读 1.6k
2 个回答

8位字节,byte型数据,本身也只能存储 -128 - 127 之间的数据,64 + 69 = 133,超过了byte能存储的最大值了,就会出现内存溢出的现象,数值就变成 -123了

再说,补码不是为了保证正负值而出现的,可以看下补码的介绍 https://baike.baidu.com/item/...

补码是为了解决 -0 的问题而出现的

8位一个字节数,如果是unit8相加则是 69+64 = 133
如果是int8 最高位表示正负 最大能表示-128 ~ 127, 出现溢出,变成-123

楼上正解!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏