Zo *_*Has 32 c math bit-manipulation bitwise-operators bitwise-and
1011000111011010
)的低阶位起作用?教练说:"当你把mod变为2的幂时,你只需要取其低阶位".我太害怕问他的意思了=)
Blu*_*eft 50
他的意思是,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.
Run Code Online (Sandbox Code Playgroud)
换句话说,number mod 4
就像number & 00000011
(在哪里&
意味着按位 - 和)
请注意,这在base-10中完全相同:number mod 10
为您提供base-10中 数字的最后一位数字,number mod 100
为您提供最后两位数字等.
use*_*016 34
他的意思是:
x modulo y = (x & (y ? 1))
Run Code Online (Sandbox Code Playgroud)
当y是2的幂时.
例:
0110010110 (406) modulo
0001000000 (64) =
0000010110 (22)
^^^^<- ignore these bits
Run Code Online (Sandbox Code Playgroud)
立即使用您的示例:
1011000111011010 (45530) modulo
0000000000000001 (2 power 0) =
0000000000000000 (0)
^^^^^^^^^^^^^^^^<- ignore these bits
1011000111011010 (45530) modulo
0000000000010000 (2 power 4) =
0000000000001010 (10)
^^^^^^^^^^^^<- ignore these bits
Run Code Online (Sandbox Code Playgroud)
Bri*_*ian 10
考虑何时采用模数为10的数字.如果这样做,您只需得到数字的最后一位数.
334 % 10 = 4
12345 % 10 = 5
Run Code Online (Sandbox Code Playgroud)
同样,如果你取一个模数为100的数字,你只需得到最后两位数.
334 % 100 = 34
12345 % 100 = 45
Run Code Online (Sandbox Code Playgroud)
因此,您可以通过查看二进制的最后数字来获得2的幂的模数.这跟按位和做的一样.
模通常返回除法后的值的余数。因此x mod 4
,例如,根据 x 返回 0、1、2 或 3。这些可能的值可以使用二进制中的两个位(00、01、10、11)来表示 - 另一种方法x mod 4
是将 x 中除最后两位之外的所有位简单地设置为零。
例子:
x = 10101010110101110
x mod 4 = 00000000000000010
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
48363 次 |
最近记录: |