为什么byte类型的数据的取值范围是[-128,127]

网上关于解答的版本有很多,综合对比了一下,找到一个很好理解的版本,总结一下,希望能帮到后来的人,原文链接不记得了,仅做学习之用,侵删。

byte类型数字占一个字节,也就是8位,类似下面8个只能存储0或1的格子。

00000001

首先说一下数据存储的问题,计算机中的数据是以其补码的形式储存的,引入三个概念:源码、反码、补码。

正数的源码、反码、补码都一样,举个例子 数字5 源码为 0000 0101 反码 补码都是 0000 0101 所以,数字5在计算机中存储的形式就是:0000 0101。

负数的反码是数字本身绝对值的源码全部取反 以 -5举例,-5的源码是 1000 0101, 绝对值的源码是 0000 0101 ,全部位取反的结果是:1111 1010,补码是反码的基础+1,为 1111 1011,所以,-5在计算机中的储存形式是 1111 1011。

接下来,byte首位可以理解成符号位,0代表整数,1代表负数。

所以,整数的表示范围为 0000 0000——0111 1111,换算成十进制就是 0——127

负数的表示范围 1000 0000 —— 1111 1111 。这里分别反推一下,1000 0000是补码,反码就是-1,是0111 1111,所求数绝对值的源码是 1000 0000 ,转化十进制再加负号结果是 -128。1111 1111是补码,反码就是 1111 1110,所求数绝对值的源码就是0000 0001,转化为十进制再加负号结果是-1,所以,范围是 -128—— -1。

综上所述,byte表示的范围就是[-128,127]。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值