在计算机内部补数1 .正数补数=反码=原码2 .负数根据原码求补数的注意符号位始终不变。
如果知道负数-8,则它表示原始代码是1000(1000 ),(1表示编码比特,1表示负数,0表示正数),而符号保持编码比特(1111 0111,),而其他位置保持逐比特(a )先进行- 1,1111 0111 (b ) b )反转)符号位保持原样,其他位置逐位反转),得到1000 ) 1000 ) )方法2 :注意:符号位保持原样! (a )该二进制数中的) 1111 1000 )逐比特反转除编码位之外的剩馀位置,得到1000 0111 (B ) 1,如果有1000 1000 4四进制的比特扩展编码数,则补充1 )的负数的前端一个
)2)正数前沿补0
无符号数扩展0前端补丁0
5 .在有符号数和无符号数的位运算c语言中,运算无符号数,包括逻辑运算和算术运算。 默认情况下,有符号数被视为无符号数进行运算。 其中,算术运算默认返回无符号数,逻辑运算当然返回0或1。
6 .样品char a、b、c; a=128; b=1; c=a b; printf('%LD(n ),sizeof ) ab ); printf('%LD(n ),sizeof(c ) c ); printf(%d(n ),c ); 结果: 4,1,-127分析:
)1) a和b都是1字节,但由于需要加法运算,所以自动变换为int型的数据,在结果出来后,再次变换为char型。 因此,a b的字节大小为4。
)其中,c的结果为-127的是a=128,因为知道其二进制存储器为1000,0000,最高有效位表示符号位,所以a实际上为-128,加1就是-127。