gpt4 book ai didi

java - 模 32 或 64 约简是什么?

转载 作者:行者123 更新时间:2023-12-02 09:16:04 30 4
gpt4 key购买 nike

在《Core Java Volume1》一书中有一条警告:

CAUTION: The right-hand side argument of the shift operators is reduced modulo 32 (unless the left-hand side is a long, in which case the right-hand side is reduced modulo 64). For example, the value of 1 << 35 is the same as 1 << 3 or 8.

这到底是什么意思?还有为什么 35 左移后 1 变成 8,而不是 0?

非常感谢

最佳答案

减少模 32 意味着(在其基本级别)您不断减去 32,直到得到 0 到 31 之间的数字(包括 0 和 31)。

换句话说:

actualValue = givenValue % 32;

这样做的原因是因为将 32 位值向左(或向右)移动 32 位没有什么意义,因为它总是为零(因为您在一侧移出位,并在另一侧移入零 - 无论您从什么开始,对 32 位值执行 32 次都会得到零) .

因此,对于 Java 整数(32 位),31 是合理的限制。对于长整型(64 位),63 是合理的限制。

在您给出的示例中,1 << 35将移位值从 35 减少到 3(因为 35 % 32 == 3 )并且 1 << 3 是 8:

 Binary
0000 0001 (1 << 0) == 1
0000 0010 (1 << 1) == 2
0000 0100 (1 << 2) == 4
0000 1000 (1 << 3) == 8
||||
|||+--- 1
||+---- 2
|+----- 4
+------ 8

关于java - 模 32 或 64 约简是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9103915/

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