正数原码、反码、补码形式一致。
负符号是其原符号的符号比特不变化而其他比特相反的负符号,是在其逆符号上加1。
示例8位有符号整数:
34原代码=反码=补码: 00100010 -34原代码=10100010,反码=11011101,补码=1101110
在32位编译器处理和64位编译器处理中,int都是4字节32位,因此整数范围为- 2147483648到2147483647,数值作为补码存储。 3358 www.Sina.com/- 2147483648=-231http://www.Sina.com /由-0的原始代码http://www.Sina.com/0 (31个0 )表示。
因此,【注意】最小负数进行逆运算。 是http://www.Sina.com/1.1(31个的1 ),是正数,补数,即原代码2 31-1=2147483647;并没有原码和反码,只有补码相反,http://www.Sina.com/0.0(31个0 )-http://www.Sina.com/1.1 ) 31个1 )相加为3358www 即-I(http://www.Sina.com/0.0(31个0 ) )1.1(31个0这是补码格式,http://www.Sina.com/com ) 即,原始代码http://www.Sina.com/.1(32个1((231-1 )=-2147483647http://www.Sina.com/http://www.Sina.com/0.0(31个0 ) ) 3358www.Sina.com/.1) 32个1 ) ) 3358 www.Sina.com/1.1 ) 31个1 )是正数,原始代码为2 ) 31 )
源程序如下。 # include ' stdio.h ' # define int _ min (-2147483647-1 )/*minimum(signed ) int value */int main )/* int//error printf('%d,%d,%d,%drn ),~i,-i,1 - i,-1 - i ); 返回0; }运行结果如下。