c语言基础系列-原码 反码 补码10

 1. 无论任何数据,在内存中存储的时候都是以二进制的形式存储的.

 

    int num = 10;

 

    原码、反码、补码都是二进制.只不过是二进制的不同的表现形式.

    数据是以补码的二进制存储的.

 

 2. 1int类型的变量.在内存中占据4个字节, 32.

 

    00000000 00000000 00000000 00000000

 

    在不考虑正负的情况下.1int类型的变量可以表示接近43e种数据.

 

    为了可以表示正负性.使用最高为来表示这个数的正负性.

    如果最高为是0 那么表示这个数是1个正数

    如果最高为是1 那么表示这个数是1个负数.

    所以,来表示数据的只有31. 所以,1int类型的变量.

    最小值是: -2147483648  最大值是:2147483647

 

 

 3. 原码:

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

 

    10的原码.

    00000000 00000000 00000000 00001010

 

    -8的原码.

    10000000 00000000 00000000 00001000

 

    绝对值: 正数的绝对值是自己,负数的绝对值去掉负号.

 

    -20.

    10000000 00000000 00000000 00010100

 

 

 3. 反码:

    正数的反码就是其原码.

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

 

    10的反码:

    

    10的原码:00000000 00000000 00000000 00001010

    10的反码:00000000 00000000 00000000 00001010

 

    -8

    -8的原码:10000000 00000000 00000000 00001000

    -8的反码:11111111 11111111 11111111 11110111

 

 

 4. 补码:

    正数的补码就是其原码.

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

 

    10.

    10的原码:00000000 00000000 00000000 00001010

    10的反码:00000000 00000000 00000000 00001010

    10的补码:00000000 00000000 00000000 00001010

 

    -8

    -8的原码:10000000 00000000 00000000 00001000

    -8的反码:11111111 11111111 11111111 11110111

    -8的补码:11111111 11111111 11111111 11111000

 

 


 5. 任何数据都是以其二进制的补码形式存储在内存中的.

 

    int num = -8;

 

 

 6. 为什么数据要以补码的形式存储呢?

    

    因为计算机中只有加法没有减法.为了更加低成本的计算出结果,所以使用补码来存储数据.

 

    3 + 2;

    3 - 2; 这个减法运算对于计算机而言它的理解是 3 + (-2); 1

 

    使用原码计算.

    3的原码    00000000 00000000 00000000 00000011

    -2的原码   10000000 00000000 00000000 00000010

 ----------------------------------------------------

              10000000 00000000 00000000 00000101 结果是1个负数明显是不对的

 

 

    使用反码计算.

    3的反码:  00000000 00000000 00000000 00000011

    -2的反码: 11111111 11111111 11111111 11111101

    --------------------------------------------------

             00000000 00000000 00000000 00000000        0

 

    使用补码计算

    3的补码:    00000000 00000000 00000000 00000011

    -2的补码:   11111111 11111111 11111111 11111110

    -------------------------------------------------

               00000000 00000000 00000000  00000001       1

 

    因为使用补码来做运算效率是最高的.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值