java数据类型byte,java定义byte
Java还提供了字节数据类型,这是基本类型。Java字节被当作最小的数,所以它的取值范围被定义为-128~127,即有符号字节。下面这篇文章主要介绍java中关于字节类型的相关信息,有需要的朋友可以参考一下。
如何解决写爬虫IP受阻的问题?立即使用。
介绍
字节,或称字节,由8位二进制组成。在Java中,字节类型数据是8位有符号二进制数。
在计算机中,8位有符号二进制数的范围是[-128,127],所以在Java中,字节类型的范围也是[-128,127]。
取值范围分析
我一直在想为什么不是-128到128?我今天分析了这个问题。
首先,我们要明白一件事,那就是操作规则:
正数的最高位都是 0 ,正数的值就是二进制表示的值。
负数的最高位都是 1 ,负数的值是 取反后加一 然后加个负号得到得值。
让我们用8位二进制来说明这个规则:
比如:00000001。最高位是0,是正数,所以表示十进制1。
再比如:1000001。最高位为1,为负。价值是什么?求逆得到0111110加1得到011111,那么值就是-127。
为了理解这个运算规则,我们正式开始说byte,它正好是一个8位的二进制数。Short是16位int是32位long是64位。
不难理解,byte的最大正数是0111111(最高位必须是0),也就是127。
那么你可能会认为byte的最小负数是11111111吧?想是吧。
大错特错。我们来看看二进制数1111111代表多少。
根据上面的提示,我们知道这是一个负数。它的值先求反,然后加1。
11111111反过来得到:0000000。加1得到0000001。最终值为-1。
这是最大的负数。你认为最小的负数是10,000,000吗?
我们来算一下倒数:0111111加1得到1000000最后得到-128。
27是0111111,但是-128是1000000,这说明了一个奇怪的事情。
仔细看看这两个二进制数。前者加1是后者吗?没错。
你可以编译一个小程序来实验:
字节a=127
a=1;
system . out . println(a);结果正好是-128。
由此可见,二进制是从0000000到0111111到100000到111111。
即从0到127到-128到-1的十进制数。
接下来,我们用一段代码来更深刻地理解byte:
公共A类{
公共静态void main(String[] args) {
int b=456
字节测试=(字节)b;
System.out.println(测试);
}
}上面的代码,最后会输出-56。原因如下:
46的二进制表示是111001000。由于int是32位二进制,所以在计算机中,实际上是000000000 … 111001000。当int转换成byte时,那么计算机只会保留后8位,即11001000。
那么11001000的最高位是1,也就是说它是一个负数,负数在计算机里都是以补码的形式存储的,所以我们计算出11001000的原码是0011000,也就是56,所以11001000就是-56,所以test的最终值是-56。
本文来自java入门专栏,欢迎学习!以上是java中字节类型的详细介绍。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。