问题描述:
有符号位的二进制数,在计算原码和补码时那个符号位是始终不变的吗?
没有符号位的二进制数,补码(负数用补码表示)就是原码各位取反,末位+1.
如 用8位二进制数表示十进制数 :
12的原码为 00001100
-12的补码为:( 00001100)取反得(11110011),末位+1,得(11110100)
有符号位的数据类型如 byte 型,占8为二进制数,最高位是符号位
如一个byte型变量的内存存储状态为10000000
怎样计算它的值?逆推:补码10000000末位-1,得(01111111),各位取反得原码(10000000),转换为10进制数是128,因为是负数,所以是-128
逆推过程中符号位改变了.各位取反得到的原码(10000000)是没有符号位的,所以1不是符号位?
我的逻辑对吗?还有什么需要补充的?那个符号位的问题有点纠结
没有符号位的二进制数,补码(负数用补码表示)就是原码各位取反,末位+1.
如 用8位二进制数表示十进制数 :
12的原码为 00001100
-12的补码为:( 00001100)取反得(11110011),末位+1,得(11110100)
有符号位的数据类型如 byte 型,占8为二进制数,最高位是符号位
如一个byte型变量的内存存储状态为10000000
怎样计算它的值?逆推:补码10000000末位-1,得(01111111),各位取反得原码(10000000),转换为10进制数是128,因为是负数,所以是-128
逆推过程中符号位改变了.各位取反得到的原码(10000000)是没有符号位的,所以1不是符号位?
我的逻辑对吗?还有什么需要补充的?那个符号位的问题有点纠结
问题解答:
我来补答展开全文阅读