java的byte取值范围

  • byte(字节)在计算机内存中占8bit(位),每一位都是二进制0或者1
  • 计算机为了区别数字的正负决定将第一位也就是最高位来标识,0位正,1为负

所以最大的正数为01111111,转换为十进制即+127

值得注意的是计算机中的负数都是以补码形式存在的,所以11111111并不是最大的负数,因为它的原码为10000001,对应-1,是最大的负数
正数的原码,反码,补码都相同

补码是将原码先取反,在加1得到的,例如10010010,先取反为(符号位不变) 11101101,再加一得到11101110

为什么会有补码

1、原码是我们人脑最容易理解的,那我们计算(+1) + (-1) = 00000001(原) + 10000001(原) = 10000010
而10000010代表的应该是(-2),显然与我们的预期(+1) + (-1) = 0 不符,于是人们想出了另一种方法,用反码表示负数

2、反码(除符号位全部取反),那么我们计算(+1) + (-1) = 00000001(反) + 11111110(反) = 11111111(反) = 10000000(原) = (-0),虽然在我们认为 +0,-0 代表的是一样的,但人们为了追求完美,又发明了补码。

3、补码(反码加一),那么我们计算(+1) + (-1) = 00000001(补) + 11111111(补) = 100000000(保留8位为00000000) = 0,正好与原来的00000000相等,解决了 +0 和 -0的问题,那么多出来的 10000000还可以代表-128

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 机器值: 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符...
    风飘客阅读 819评论 0 0
  • 二进制,是计算技术中广泛采用的一种数制。也就是说计算机中是0和1进行计算的。在java中int类型是4字节8比特的...
    jarWorker阅读 966评论 0 2
  • 1.你自已决定是否需要有正负: 就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我们必须自已决定某个...
    Xiho丶阅读 2,302评论 0 2
  • 「WTF系列」深入Java中的位操作 关于WTF系列 引 学完本章节你将学会位的基础概念与语法,并且还会一些骚操作...
    qiujuer阅读 1,061评论 0 5
  • 领成绩单的那天早晨,妞发烧了。 每年冬天,儿童医院都是人满为患,今年尤甚,听说排队挂号的队伍,从二楼沿着楼梯一直排...
    小熊呀阅读 1,176评论 7 1

友情链接更多精彩内容