byte类型数据

byte类型数据今儿一个小朋友问我一件事情 Java 的 byte 类型的数据范围是从 128 到 127 一直在想为什么不是 128 到 128 呢 首先我们得明白一件事情 那就是运算规则 正数的最高位都是 0 正数的值就是二进制表示的值 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 负数的最高位都是 1 负数的值是取反后加一然后加个负号得到得值 nbsp nbsp nbsp nbsp nbsp nbsp

今儿一个小朋友问我一件事情

Java的byte类型的数据范围是从 -128 到 127一直在想为什么不是 -128 到 128呢?
首先我们得明白一件事情,那就是运算规则:
正数的最高位都是 0 ,正数的值就是二进制表示的值。                                    
负数的最高位都是 1 ,负数的值是 取反后加一 然后加个负号得到得值。      






我们用8位的二进制来说明一下此规则:
比如:00000001。最高位是0 为正数 ,那么表示的就是 十进制的 1。
再比如:.最高位是1 为负数,值是多少?取反得到 0  加1 得到  0 ,那么值为 -127



理解此运算规则我们正式开始说byte,byte正好是8位的二进制数。short是16位 int是32位 long是64位。

不难理解,byte的最大正数就是 0(最高位必须是0),也就是 127。
那么你可能会想 byte的最小负数就是  了,对不对?


这么想就大错特错了。让我们看看这个二进制数表示多少。
根据上面的提示 我们知道这是一个负数。它的值是先取反再加1 。

取反得到:00000000,加1得到 00000001 。最后得到的值为-1.
这可是最大的负数啊。由此你是不是想到了最小的负数会不会是呢?
让我们算一下 取反:0 加1得到 最后得到 -128.

127是0  然而 -128是 ,看出来一个奇怪的事情。
仔细的看一下这两个二进制数 是不是前者加1就得到后者呢?对。
可以编一个小程序实验一下:



 byte a = 127; a+=1; System.out.println(a); 

结果正好是-128
由此我们可以看出来二进制从 00000000 到0到到
                           即 十进制从       0          到    127      到    -128     到 -1

另外:

8位(bit)=1字节(Byte),1024字节=1KB;

提到了字节,不得不再提到“字”这个计量单位:“字”由若干个字节构成,字的位数叫做字长,字长就是说字所对应的二进制数的长度。不同的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。
前期的DOS就是8位的,后期的DOS是16位的,Win9X是基于DOS的,所以也是16位的,NT核心的Windows是32位的,现在也有了64位的XP/2003,CPU也有了64位的,这个操作系统和CPU所说的位就是bit的意思,即二进制数的长度。
字节是固定由8位二进制构成,64位系统就代表了64位的二进制代表一个字,换算成字节就是64/8=8,即是说由8字节构成一个字,32位系统就是32/8=4,4个字节代表一个字。








版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232599.html原文链接:https://javaforall.net

(0)
上一篇 2025年9月28日 下午7:01
下一篇 2025年9月28日 下午7:22


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号