2021-07-14

2021年7月14日
正在公司上班(机械画图狗浑水摸鱼中),突然想到了一个问题。
为什么byte的取值范围为[-2∧7,2∧7-1],相信很多刚入门的初学者和我一样,存在这个问题,可能想的是取值范围为[-127,127],当然这是一个很有趣的问题,我和大家来说一下自己的观点。
是这样的,一个byte有一个字节,也就是八位二进制数,而二进制中第一位代表的是符号,最重要的一点是,计算机是以补码的形式存储数据的。
正数原码的反码和补码都是一样的,所以
0111 1111的补码也是0111 1111,最大值即为127。
而负数不一样了,负数是原码的符号位以后取反,然后再+1,例如1000 0001的反码为
1111 1110,+1为1111 1111。那为什么最小值要取-128呢,是因为还存在一个1000 0000(-0),这个数是没有任何意义的,不能够取反码,但是计算机将其规定为-128,也就是说,其符号位和数值位都是一样的。
二进制原码对我们人来说,是很能够直观的表达意思的,但是有个弊病,在计算机的语言中直接利用二进制运算的话,结果是不准确的,所以聪明的人们想到了利用原码的补码进行计算,然后再取原码,可以完成准确的运算,这也是数学独有的魅力吧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值