原码,补码&反码

int main()
    {
        int a,b;
        a = 234;    //0000 0000 1110 1010    数据以补码形式存储
        b = ~a;        //1111 1111 0001 0101(取反得到的是补码) --> 1000 0000 1110 1011(原码)
                //符号位为1,负数 补码求原码 
        printf("%d\n",b);
        a = ~b;        //0000 0000 1110 1010    -->符号位为0,正数  原码=补码
        printf("%d\n",a);
        return 0;
    }

输出结果:

-235
234

原码:

最高位表示符号位. 剩下的位数.是这个数的绝对值的二进制.

反码:

正数的反码就是其原码.

负数的反码就是在其原码的基础之上 符号位不变,其他位取反.

补码:

正数的补码就是其原码.

 负数的补码就是在其反码的基础之上+1

扫描二维码关注公众号,回复: 2445563 查看本文章

在计算机中,数据以补码的形式存储;

取反:将每一位取反,包括符号位

例如234;in类型占4字节,32位

原码(补码):0000 0000 1110 1010

          取反    : 1111 1111  0001 0101(补码形式)

输出转化为原码:1000 0000 1110 1011(原码)(-235)

欢迎指正!

猜你喜欢

转载自blog.csdn.net/yanxu_165319/article/details/81213890