gpt4 book ai didi

java - Int 到 char 转换,数字错误

转载 作者:行者123 更新时间:2023-12-01 17:59:09 25 4
gpt4 key购买 nike

我有以下代码:

int a=-12;
char b=(char) a;
System.out.println(b);
System.out.println(b+0);

它首先打印出一些空字符,然后打印出数字 65524。如果我将 a 更改为 16,则显示的数字将变为 65520。如果 a-2 ,则数字为 65534。

如果数字是正数并且足够小,它会从 Unicode 表中打印出字符,并返回字符的编号(与 a 相同)(如果一切正常),如果不正常,则返回上面的前一个奇怪数字(如果是 a太大了)。

例如,对于 a = 8451,它返回 ℃(摄氏度)字符和 a 本身 (8451),但如果 a=84510,它返回一些奇怪的中文符号和与 a 不同的数字 (18974)。如果 aa=845100 更大,则返回空 sumbol 和 58668。

问题是,这些数字从何而来?

我曾尝试寻找答案,但到目前为止并不幸运。

编辑由于 int 到 char 是缩小转换,请考虑与 byte a 相同的问题。太大的数字现在显然是不可能的,但我想知道负数会发生什么 - 将 byte a = -x 转换为 char 会得到与 int a 相同的奇怪数字。

最佳答案

int 是一个有符号的数字,具有4 字节32 位。 -12 的二进制补码表示为

11111111 11111111 11111111 11110011 .

char 是一个无符号的,具有 2 字节16 位

int a=-12;
char b=(char)a;

二进制补码 b 的表示为

11111111 11110011

相当于65524

关于java - Int 到 char 转换,数字错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42324199/

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