计算机中有符号整数的取值范围

计算机中整数包括:byte , short ,int ,long。

有符号数就是: 带符号位最前面的一位是符号位,正数是 0 表示,负数是 1 表示;

1.其中正数以原码保存,负数以补码保存 。

 2. 计算机都是以补码的方式存储的。   

就以byte为例吧,bate 是一个字节对应8位,范围是0000 0000~1111 1111。

上限对应的二进制为:0111 1111,最高位0表示正数,故为127。

下线对应的二进制为:1000 0000

从补码求原码的方法跟原码求补码是一样的 

先保留符号位其它求反:  1111 1111, 再加1,就是 1 1000 0000, 超过了8位了 

对,用8位数的原码在这里已经无法表示了,最高位溢出,结果为:

-128 = 1 1000 0000[原] = 1 1111 1111[反] = 1 1000 0000[补] = -128 

那么,回到原码处, -128 的原码和补码,二者都是 1000 0000(超出的自动丢失), 

1000 0000 在原码表示什么呢? -0, 但补码却规定0没有正负之分 

转换一下思路,看看计算机里,是怎么运算的: 

对于负数,先取绝对值,然后求反,加1

-128 -> 128 -> 1000 0000 -> 0111 1111 -> 1000 0000

所以, 8位有符号的整数取值范围的补码表示 

1000 0000 到 0000 0000, 再到 0111 1111  即 -128 到 0, 再到 127 ,最终 -128 ~ +127 

综上所述  类型                      所占字节                                   取值范围

                byte                             1                                        -128-127

                short                            2                                      -2^15-2^15-1

                 int                               4                                        -2^31-2^3-1

                 long                            8                                        -2^63-2^63-1

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值