- 2的冪模如何僅對二進制數的較低位(
1011000111011010
)起作用? - 什麼是這個數字模2來電0,2來電4?
- 2的權力與模運算符有什麼關係?它是否擁有特殊的財產?
- 有人可以舉個例子嗎?
導師說:「當你拿一些mod到2的冪時,你只需要低位」。我太害怕問他是什麼意思=)按位運算符上的權力2的調整?
1011000111011010
)起作用?導師說:「當你拿一些mod到2的冪時,你只需要低位」。我太害怕問他是什麼意思=)按位運算符上的權力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
給出了最後兩位數字等。
只有當所有操作數都是正數時纔是這種情況!根據不同的語言,行爲將有所不同。例如在C中,'-5%4 == -1'儘管在代數中我們通常期望'-5 mod 4'是3(並且在C:'-5&(4 - 1)== 3這意味着例如,如果左操作數不是無符號的,編譯器將不會優化文字'%4' – calandoa
@calandoa:我們在此討論二進制數字系統,而不是位編碼編號'-5',例如寫成'-101' –
@BlueRaja:當然我們正在談論位編碼:'&'沒有被定義爲數學'-',我想你的評論更多的是「我們不是在談論負數「,也許我們不是,但是在問題和答案中都不清楚,所以我說得更清楚。 – calandoa
他的意思是說:
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
嘿謝謝你的回覆。我沒有完全明白你的例子嗎?當y = 1時, –
不起作用。 –
@Rzu它確實有效。任何以1爲模的數等於0. –
考慮以10爲模的數字。如果你這樣做,你只需要得到數字的最後一位數字。
334 % 10 = 4
12345 % 10 = 5
同樣,如果你以100爲模數,你只會得到最後兩位數。
334 % 100 = 34
12345 % 100 = 45
所以,你可以通過查看二進制的最後一位數來得到二的冪的模。這與做一個按位和。
這是否也適用於2的冪數? 54%32這是2^5給出22. –
波波:是的。最後的位數由您使用的兩個冪決定。正如Cicada所描述的那樣,你會計算它爲54&(32-1)。 – Brian
模通常返回除法後的值的其餘部分。因此,例如,x mod 4
根據x返回0,1,2或3。這些可能的值可以用二進制(00,01,10,11)中的兩位來表示 - 另一種做x mod 4
的方法是簡單地將所有位設置爲除了最後兩位之外的零。
例子:
x = 10101010110101110
x mod 4 = 00000000000000010
回答您的具體問題:
你爲什麼不嘗試一些例子計算通過手,那麼你就看看會發生什麼。 – starblue