有符号位的二进制数,在计算原码和补码时那个符号位是始终不变的吗?
有符号位的二进制数,在计算原码和补码时那个符号位是始终不变的吗?
没有符号位的二进制数,补码(负数用补码表示)就是原码各位取反,末位+1.
如 用8位二进制数表示十进制数 :
12的原码为 00001100
-12的补码为:( 00001100)取反得(11110011),末位+1,得(11110100)
有符号位的数据类型如 byte 型,占8为二进制数,最高位是符号位
如一个byte型变量的内存存储状态为10000000
怎样计算它的值?逆推:补码10000000末位-1,得(01111111),各位取反得原码(10000000),转换为10进制数是128,因为是负数,所以是-128
逆推过程中符号位改变了.各位取反得到的原码(10000000)是没有符号位的,所以1不是符号位?
我的逻辑对吗?还有什么需要补充的?那个符号位的问题有点纠结
对于无符号数而言,没有什么原码、反码、补码的概念,只有绝对值.
对于带符号数,才会有采用什么码型来表示的问题.10000000确实是-128的补码.对于带符号数,最高位是符号位,0表示正数、1表示负数,始终不变.所有的码型换算,都只针对低位的绝对值部分进行.
例如12的原码是00001100,-12的原码是10001100.对其绝对值部分0001100求反加1得1110100,最高位添上符号位1,就是补码11110100.
所以码型转换运算只针对绝对值部分,不针对符号位,符号位始终不变.��-128�ò����ʾ�����������ģ�128�ĵ�ԭ����10000000��ȡ����ֵ���� 0000000��1111111����1��0000000����ֻȡ��7λ�𣿣���������λ����1��10000000.�ǵġ���Ϊ���ڴ�������ԣ�����ı�ʾ��Χ��-127~+127�������а�������0��+0��00000000����-0��10000000������ʵ��Ӧ���У�0��û�з�ŵģ����Թ涨0��+0����ʾ����ô-0����һ��û���õĶ��������ˣ�����ڵ�7λ���ԣ�ģΪ128����ô128��0���ǵ�ֵ�ģ���ʱ���λ�Ǹ��ģ����ǹ涨-0�ͱ�ʾ-128��������Ϊ�涨��