1011000111011010
)的低阶位起作用?教练说:“当你把mod变为2的幂时,你只需要取其低阶位”。我太害怕问他的意思了=)
答案 0 :(得分:46)
他的意思是,取number mod 2^n
相当于剥离除n
的{{1}}最低阶(最右边)位以外的所有内容。
例如,如果n == 2,
number
换句话说,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
表示按位 - 和)
请注意,这在base-10中完全相同:&
为您提供base-10中数字的最后一位数字,number mod 10
为您提供最后两位数字等。
答案 1 :(得分:31)
他的意思是:
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
答案 2 :(得分:10)
考虑何时取数为10的数字。如果你这样做,你只需得到数字的最后一位数。
334 % 10 = 4
12345 % 10 = 5
同样,如果你取一个模数为100的数字,你只需得到最后两位数。
334 % 100 = 34
12345 % 100 = 45
因此,您可以通过查看二进制的最后一位数来获得2的幂的模数。这与做按位和。
相同答案 3 :(得分:4)
模数通常在除法后返回值的余数。因此,x mod 4
例如,根据x返回0,1,2或3。这些可能的值可以使用二进制(00,01,10,11)中的两位来表示 - 另一种方法x mod 4
是简单地将所有位设置为x,除了最后两位之外。
示例:
x = 10101010110101110
x mod 4 = 00000000000000010
答案 4 :(得分:2)
回答您的具体问题: