有符号位的二进制数,在计算原码和补码时那个符号位是始终不变的吗?

问题描述:

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

问题解答:

我来补答
对于无符号数而言,没有什么原码、反码、补码的概念,只有绝对值.
对于带符号数,才会有采用什么码型来表示的问题.10000000确实是-128的补码.对于带符号数,最高位是符号位,0表示正数、1表示负数,始终不变.所有的码型换算,都只针对低位的绝对值部分进行.
例如12的原码是00001100,-12的原码是10001100.对其绝对值部分0001100求反加1得1110100,最高位添上符号位1,就是补码11110100.
所以码型转换运算只针对绝对值部分,不针对符号位,符号位始终不变.
再问: ��-128�ò����ʾ�����������ģ�128�ĵ�ԭ����10000000��ȡ����ֵ���� 0000000�
 
 
展开全文阅读
剩余:2000
上一页:第九题,详解
下一页:gyyv