128字节 java_关于byte的范围为什么是 -128——127?

初入知乎:

今天是19年的第四天了,先走个流程给大家拜个年,祝大家新的一年里身体健康,工作顺心,事事如意,成家的家庭和睦,单身的早日脱单!

本人18年在知乎看过很多位大佬的文章,受益良多,于是萌生想法,把自己个人的情绪以及对java中一些基础的东西写上知乎,其一目的,就是练练文笔,锻炼思绪;其二就是分享学习心得; ps(因为开玩笑跟朋友打赌,在19年每周要在知乎上写一篇关于java心得,输了要给大佬送两个月早餐,为了能睡个好觉,我可不会轻易认输)。不扯了直接进入正题。

正文 关于byte的范围为什么是-128——127?

一 基础知识

在讲byte的范围前,先普及下在java中数据在计算机中的表示方法,数据在计算机中都是用二进制表示的,并且是用补码进行数据计算的。

先引入原码,反码,补码:

原码:原码是一种计算机中对数字的二进制定点表示方法,一般进制的最高位是符号位,1代表负号,0代表正号。

原码举例:(对于十进制转换成二进制就不多说,自行解决)

15 对应的原码就是 0000 1111(0是代表正号)

-15 对应的原码就是 1000 1111 (从左至右第一个1代表负号)

反码:若数值是正数的情况下,其反码是跟原码一样的

若数值的负数的情况下,其反码是在原码的基础上,保证符号位不改变,其他位遵循0变1,1变0的原则。

反码举例: 15 对应的反码就是 0000 1111(与原码保持一致)

-15 对应的反码就是 1111 0000(符号位与原码一致,其他位遵循0变1,1变0原则)

补码:若为正数,其补码与原码保持一致;若为负数,其补码在相应的反码上+1;

补码举例 15 对应的补码就是 0111 1111(与原码保持一致)-15 对应的补码就是 1111 0000

+ 1

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

对应的补码就是 1111 0001 (在反码的基础上加1)

由此得出结论:正数的反码,补码都跟原码保持一致。

负数的反码就是在原码的基础上保持符号位不变,其他位遵循0变1,1变0原 则,其补码就是在反码的基础上+1;

计算过程:比如 -15 + (2)=-13在计算机里如何实现

分析 :要知道计算机计算都是要用补码,所以第一步转换成补码形式,用补码进行加减数 补码

-15 1111 0001

+ 2 0000 0010

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

1111 0011

但是要明白你刚刚得出的答案是补码形式,当计算机要要得出最终的十进制答案时,你就得把刚刚的补码再逆转换成原码形式,最后再从二进制原码形式转化成十进制

如 补码 1111 0011

反码 1111 0010

原码 1000 1101

数 -13

二 理解方式:关于byte的范围为什么是 -128——127?

有了上面的基础,我们来解决今天的问题,首先要知道byte是一个字节,一个字节是占8位, 如 _ _ _ _ _ _ _ _ ,在这8个位置上只能填0,1,我们根据排列组合的知识那么一共2^8=256种,也就是说byte能够表示的数据一共有256个数,根据基础知识中的二进制第一位是符号位,又因为正数补码和原码是一致的,所以正数最大值的补码 0111 1111,其代表的就是127,那么从127-1之间存在127个正数,加上0就是128个数,所以负数占一半,也就是128个数,(如果上面理解不了, 请看下图)。

接下来我们按照数递减原则来解决问题正数的最大值应该是 0111 1111 127 (补码:再次提示计算机的数据都是以补码形式)0111 1110 126

0111 1101 125

..............................

0000 0001 1

0000 0000 0 (为了方便理解 我把0看成正数)

由上可知补码从0000 0000 到 0111 1111 中存在128个数字

0~127:128个数

接下来负数从大到小最大值是 -1 对应的原码 1000 0001

反码 1111 1110

补码 1111 1111

补码则负数从大到小的补码从大到小顺序排列如

- 1 1111 1111

-2 1111 1110

-3 1111 1101

................

-127 1000 0001

-128 1000 0000 这数补码实际是-0的补码

-128— -1(共128个数) (这里是关键,0和-0不是同一个数,也就是说-0的补码用来表示-128了,-0的补码"10000000"通过逆向计算刚好得到-128这个值)

正数和0一共128个 负数128个 刚好满足2^8=256个数

所以byte的范围是 -128——127!!!

由此其他类型的范围也可推出。

祝福

老师曾经说写作要首尾呼应,那么再次祝愿各位新年大吉,美梦成真!

吐槽:知乎码字不容易,还请各位大佬手下留情,不喜勿喷。格式调了很多遍,发布后又改变了,实在抱歉。下次我再试试,这次各位先将就看看。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值