Java 需要帮助理解这行吗
提前感谢您提出这个基本问题 我正在通过一个教程,我看到这一行Java 需要帮助理解这行吗,java,math,binary,bit-manipulation,logical-operators,Java,Math,Binary,Bit Manipulation,Logical Operators,提前感谢您提出这个基本问题 我正在通过一个教程,我看到这一行 int a = (n & 8) / 8 这是为了确定从右边开始的第四位是0还是1的二进制表示。我理解比特等的概念,但我不理解这代表什么数学方程(如果有的话) 有人愿意解释一下这是如何写在数学方程式中的吗?此外,请让我知道,如果我错过了任何其他在我的理解这一行。谢谢。十进制的8是二进制的1000 所以如果你用任何数字 n & 8 仅当第4位为1且 如果再除以8,则返回1,否则返回0 例如 对于9(1001) 会是
int a = (n & 8) / 8
这是为了确定从右边开始的第四位是0还是1的二进制表示。我理解比特等的概念,但我不理解这代表什么数学方程(如果有的话)
有人愿意解释一下这是如何写在数学方程式中的吗?此外,请让我知道,如果我错过了任何其他在我的理解这一行。谢谢。十进制的
8
是二进制的1000
所以如果你用任何数字
n & 8
仅当第4位为1
且
如果再除以8,则返回1,否则返回0
例如
对于9
(1001
)
会是
1001
& 1000
------
1000
现在,对于第四位为0
对于7
(0111
)
会是
0111
& 1000
-----
0000
n&8
将逻辑和
掩码应用于n
的第四位
n: 11001010 // example value
8: 00001000
result: 00001000
将该数字除以8,结果为最低位:
result: 00000001
将一个数字除以2^n
将数字n
位向右移动(与乘以2^n
将位向左移动的方式相同)
结果分配给变量a
,该变量现在包含0或1,具体取决于第4位的值
(n AND 1000 ) >> 3
这将N的第4位保留在一个临时变量中,作为第0位(最右边的位)。
由于AND,所有其他位都将为零。逐位运算符对位工作并执行逐位操作。假设
a=60
;和b=13
;现在,以二进制格式,它们将如下所示:
a = 0011 1100
b = 0000 1101
a&b=0000 1100
然后a&b也是一个整数,在您的示例中,该整数进一步除以8。您需要了解
&
是“按位AND”的,并对数字的二进制表示进行操作。谷歌“按位和”,你应该找到一些好的材料。此外,一旦隔离了“8”位,将结果除以8将该位下移到“1”位置。把它写在纸上,和+1一样。谢谢你,彼得。
result: 00000001
(n AND 1000 ) >> 3
a = 0011 1100
b = 0000 1101
a&b=0000 1100