原码、反码、补码以及整型变量值的范围

一、原码、反码、补码

计算机在存储整型变量时。是以整数的补码形式进行存放。
那什么是补码呢?一个正数的补码就是此数的二进制形式,一个负数的补码我们先算出其原码在求出反码,最后由反码得出其补码形式。
原码:整数的二级制形式;
反码:将原码的符号位不变,其他位依次按位取反就可以得到了;
补码:反码加一得到补码。
在存放整数的存储单元中,最左面一位用来表示符号的,该位为0表示正数,该位为1表示为负数。
例如(以整型数据分配2个字节为例)
1的补码是0000000000000001;
-1的原码是1000000000000001
-1的反码是111111111111111110
-1的补码是111111111111111111。

二、int型变量值的范围

以int型数据在内存中分配两个字节为例:
最大值为0111111111111111
第一位是符号位0,表示正数,后面15为全为1,此数值是十进制数32767;
最小值是1111111111111111
同样是不是最小值也是-32767呢?
其实不然,在计算机存储中,以二进制补码的形式存放数据是会出现两个0,
即正0和负0;
+0:0000000000000000;(正数的原码就是其原码)
-0:1000000000000000;(-0的原码)
-0:111111111111111111;(-0的反码)
-0:1000000000000000;(-0的补码)
可以看到-0由反码加1后得到补码,此时为17位,int型在内存中占两个字节,16个比特位,17位存不下会产生溢出,高位舍去
得到-0的补码0000000000000000;
由此+0和-0在内存补码相同,因为0只要一个,为了不浪费空间将-0表示为最小的数-32768;
-32768的补码表示为10000000 00000000;
-32768在16位中没有原码;
综上int型数值范围是-32768~32767。

第一次写博客,有错误请大家指出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值