- 2 的幂模如何仅对二进制数 ( ) 的低位起作用
1011000111011010
? - 这个数字 mod 2 到 0 的幂,2 到 4 的幂是多少?
- 2 的幂与模运算符有什么关系?它是否具有特殊属性?
- 有人可以给我一个例子吗?
教练说“当你将某个 mod 取为 2 的幂时,你只需取它的低阶位”。我太害怕问他的意思了=)
1011000111011010
?教练说“当你将某个 mod 取为 2 的幂时,你只需取它的低阶位”。我太害怕问他的意思了=)
他的意思是,采取等同number mod 2^n
于剥离除.n
number
例如,如果 n == 2,
number number mod 4
00000001 00000001
00000010 00000010
00000011 00000011
00000100 00000000
00000101 00000001
00000110 00000010
00000111 00000011
00001000 00000000
00001001 00000001
etc.
所以换句话说,number mod 4
与number & 00000011
(其中&
表示按位与)相同
请注意,这在以 10 为底的情况下完全相同: number mod 10
为您提供以 10 为底的数字的最后一位,number mod 100
为您提供最后两位等。
他的意思是:
x modulo y = (x & (y − 1))
当 y 是 2 的幂时。
例子:
0110010110 (406) modulo
0001000000 (64) =
0000010110 (22)
^^^^<- ignore these bits
现在使用您的示例:
1011000111011010 (45530) modulo
0000000000000001 (2 power 0) =
0000000000000000 (0)
^^^^^^^^^^^^^^^^<- ignore these bits
1011000111011010 (45530) modulo
0000000000010000 (2 power 4) =
0000000000001010 (10)
^^^^^^^^^^^^<- ignore these bits
考虑一下何时取一个模 10 的数字。如果这样做,您只会得到该数字的最后一位。
334 % 10 = 4
12345 % 10 = 5
同样,如果你取一个模 100 的数字,你只会得到最后两位数。
334 % 100 = 34
12345 % 100 = 45
因此,您可以通过查看二进制的最后一位数字来获得 2 的幂的模数。这与按位与相同。
Modulo 通常返回除法后的余数。因此x mod 4
,例如,根据 x 返回 0、1、2 或 3。这些可能的值可以使用二进制 (00, 01, 10, 11) 中的两位表示 - 另一种方法x mod 4
是简单地将 x 中的所有位设置为零,除了最后两位。
例子:
x = 10101010110101110
x mod 4 = 00000000000000010
回答您的具体问题: