在c语言中,数值是以补码表示的: 正数的补码和原码相同负数的补码:将该数的绝对值的二进制形式按位取反再加1。
1、计算机存储数据是以二进制的补码形式来存储的,正数的补码是它本身(如:有二进制00000110,因为他的第一位是0,即代表是正数,反码、补码就是它本身)。
2、负数的补码是它的反码加1,也就是你说的‘取反加一’(如:有二进制10000110,第一位是1,代表它是负数,反码就是每一位都取反,为01111001,所以,补码就是01111010)。
二进制运算当然是在二进制数字间的运算。正数的补码等于原码,负数的补码就是取反加一(符号位不动)。举个“栗子”:\x0d\x0a求-7的补码。\x0d\x0a因为给定数是负数,则符号位为“1”。\x0d\x0a后七位:-7的原码(10000111)→按位取反(11111000)(负数符号位不变)→加1(11111001 加在末尾了),所以-7的补码是11111001。\x0d\x0a\x0d\x0a如果末位为1,加1后要进位,即‘10’。二进制只有0和1,不会出现‘2’的。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)