gpt4 book ai didi

java - 位移一个字节

转载 作者:行者123 更新时间:2023-12-01 14:31:28 26 4
gpt4 key购买 nike

我有以下代码:

byte my_byte;   
my_byte |= (1 << 7);
my_byte |= (1 << 6);

我试图将 my_byte 中的第 8 位和第 7 位设置为 1。使用调试器我发现执行第一行后,my_byte 的值为 -128。执行第2行后,my_byte的值为-64。

我以为最终结果是 192 (2^7 + 2^6)。有人知道我做错了什么吗?

另外,我应该在开始时初始化 my_byte 吗?如果是这样,我如何将所有位设置为 0?

感谢您的帮助。

最佳答案

问题在于 byte 已签名,因此 10000000 被转换(2 的补码)为 -128。使用short 而不是byte。要将所有位初始化为 0,只需执行 short my_byte = 0;

P.s:short 是 16 位,与 byte 是 8 位不同,据我所知,Java 中没有 8 位无符号原始类型

关于java - 位移一个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16834372/

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