gpt4 book ai didi

Java 字节值不正确

转载 作者:行者123 更新时间:2023-12-02 07:47:11 25 4
gpt4 key购买 nike

我有这个十六进制值 93,十进制值应该是 147。由于这个数字小于 255,所以它可以用字节表示。

在java中我这样做了

System.out.println((new Integer(1)).byteValue()); //prints 1
System.out.println((new Integer(147)).byteValue()); //prints -109!!! WHY?

我不明白什么?整数 147 不是打印 147,而是打印 -109...

最佳答案

Java 中的字节有符号的,因此它表示 -128 到 127 范围内的值,这与其他语言中在该范围内的无符号替代值相反0 到 255 之间。所有 Java 整数类型都是有符号的,但 char 除外,因为它用于保存 0 到 65535 之间的 16 位 Unicode 值。

存储为字节的值 147 用二进制表示为:

10010011

由于根据 Oracle 文档,字节 是:“一个 8 位有符号二进制补码整数”,因此有符号值变为:

= -2^7 + 2^4 + 2^1 + 2^0
= -128 + 16 + 2 + 1
= -109

关于Java 字节值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com