- 如何对二进制数(
1011000111011010
)的低位进行2次幂取模? - 对于0次方和4次方,这个数字的模是多少?
- 2的幂与模运算有什么关系?它是否具有特殊属性?
- 能否给出一个例子?
教练说:“当你对2的幂取模时,只需要取它的低位”。我太害怕问他是什么意思了=)
1011000111011010
)的低位进行2次幂取模?教练说:“当你对2的幂取模时,只需要取它的低位”。我太害怕问他是什么意思了=)
他的意思是,取 number mod 2^n
相当于去掉除了 n
个最低位(即右侧位) 以外的所有位。
例如,如果 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
(其中的 &
表示按位与)。
请注意,在十进制中也是完全相同的: number mod 10
可以得到数字在十进制下的个位数,number mod 100
可以得到数字在十进制下的最后两位数,等等。
-5
写作-101
。 - BlueRaja - Danny Pflughoeft&
未定义数学运算符-
。我猜你的意思更多的是“我们不讨论负数”。也许我们确实没有讨论,但这在问题和你的回答中并不清楚,所以我做了澄清。 - calandoanumber MOD 256
<=> (number & (0xFF00)) >> 8
这样的东西怎么样?(其中2^8 = 256) - Sandburgx 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
你可以通过查看二进制的最后几位来获取一个二的幂次方的模数。这与执行按位与操作相同。
模运算通常返回除法后的余数。例如,x mod 4
返回0、1、2或3,具体取决于x的值。这些可能的值可以用二进制的两位(00、01、10、11)表示——另一种做法是将x中除最后两位外的所有位都设置为零来进行x mod 4
。
示例:
x = 10101010110101110
x mod 4 = 00000000000000010
回答您具体的问题: