当我分配大于字节的值时会发生什么?

安全:

当我分配大于字节的值时会发生什么?

根据官方的oracle文档,Byte

  • 字节:字节数据类型是8位带符号的二进制补码整数。最小值为-128,最大值为127(含)。字节数据类型对于在大数组中节省内存非常有用,因为内存节省实际上很重要。它们也可以用来代替int,因为它们的限制有助于澄清您的代码;变量范围有限的事实可以作为文档的一种形式

我的代码是

public class B
{

    public static void main(String args[])
    {
        byte b;
        b=(byte)129;
        System.out.println("b="+b);

    }
}   

输出:

b=-127

当我分配大于字节的值时会发生什么。Java编译器将报告错误。如果我将此值转换为字节,我会去的

byte b = (byte) 128;

我不明白该程序的输出?

马修一世:

对于字节类型,只有8位存储值。您只能有256个不同的值(2 ^ 8 = 256)。Java表示负值,最高位为“ 1”:

-128 (dec) => 10000000 (bit)
-127 (dec) => 10000001 (bit)
... 
-1   (dec) => 11111111 (bit)
0    (dec) => 00000000 (bit)
+1   (dec) => 00000001 (bit)
+127 (dec) => 01111111 (bin)

当您尝试设置一个值需要存储一个以上的字节时,就会发生将最低字节设置为一个字节值的情况:

+129 (dec) => 00000000 00000000 00000000 10000001  (int representation)

but 10000001 (bit) is -127 (dec) in byte representation of java type (as described above)

为了更好地理解Java中的溢出问题,请参阅以下文章:https : //medium.com/@jeanvillete/java-numeric-overflow-underflow-d6b206f96d88

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我在 C# 中将 `ref` 值分配给 `out` 参数时会发生什么?

当我们将char转换为大于256的数字时会发生什么?

当我在函数中重新分配可变默认参数时会发生什么?

当我们为变量分配引用时会发生什么?

当我在C ++中存储指向按值传递参数的指针时会发生什么?

当我们改变循环中的值时会发生什么?

当我们在C ++中更改字符串的值时会发生什么

当我们通过该函数传递值结果时会发生什么?

当我的 Python 范围对象停止值从未被命中时会发生什么?

当我调用“ BufferStrategy.show()”时会发生什么?

当我使用多个模拟时间时会发生什么?

当我取消订阅 Observable 链时会发生什么?

当我放弃对iOS 6的支持时会发生什么?

当我使用'|'时会发生什么 或'<',c ++

当我多次调用requestAnimationFrame时会发生什么

当我将%esp移至%ebp时会发生什么?

当我在Xcode IDE中“保存”时会发生什么

当我忘记登录TTY时会发生什么?

当我截断正在使用的文件时会发生什么?

当我不输入期望的命令时会发生什么?

当我们将 2 个值分配给同一个变量时会发生什么?

在Python 3中,当我索引一个字节数组时会发生什么?

当我在 java 中声明引用类型变量并分配 Sub-Type 实例时会发生什么

当我`sock.recv(..)`的字节数超过发送给我的字节数时会发生什么?

当我尝试获取字符串的字节但从字符到字节的转换溢出整数长度时会发生什么?

(赋值中的左值无效)当我运行它时会发生这个错误。这是什么意思?

当我用引用而不是拥有的值调用std :: mem :: drop时会发生什么?

当我使用切片语法“ mylist [:] = [mylist,mylist,...]”将带有自我引用的列表分配给列表副本时会发生什么情况?

在python中,当我们为变量分配新值时,旧变量会发生什么?