gpt4 book ai didi

java - 了解按位运算

转载 作者:行者123 更新时间:2023-12-01 17:20:22 24 4
gpt4 key购买 nike

此代码段:

(x >>> 3) & ((1 << 5) - 1)

显然会产生一个 5 位整数,其中 x 的第 3 - 7 位。

你会如何理解这一点?

最佳答案

让我们看看((1 << 5) - 1)第一的。

  • 1 << 5等于100000以二进制形式。
  • 减去 1 后,得到 11111 ,五个 1 的二进制数。

现在,了解 a & 0b11111 很重要是仅保留 a 的 5 个最低有效位的操作。回想一下&当且仅当两个位都为 1 时,两个位中的 1 个位才为 1。 a 中的任何位因此,第 5 位以上将变为 0,因为 bit & 0 == 0 。此外,从位 1 到位 5 的所有位都将保留其原始值,因为 bit & 1 == bit ( 0 & 1 == 01 & 1 == 1 )。

现在,因为我们移动 x 的位在x >>> 3下降 3,丢失 x 的三个最低有效位,我们将上述过程应用于位 4 至 8(从索引 1 开始)。因此,操作的结果仅保留这些位(如果我们说第一个位是位 0,那么它确实是位 3 到位 7,如您所述)。

<小时/>

举个例子:1234 。用二进制表示,即 10011010010 。因此,我们从平移 3 开始:

10011010010 >>> 3 = 10011010    

本质上我们只是修剪掉最后 3 位。现在我们可以执行&操作:

  10011010
& 00011111
--------
00011010

所以,我们的最终结果是11010 。正如您所看到的,结果符合预期:

bits  |  1 0 0 1 1 0 1 0 0 1 0
index | 10 9 8 7 6 5 4 3 2 1 0
^-------^

关于java - 了解按位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19205015/

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