我們不難發現:是否有可能解決位明智算子的方程?
a=7
b=8
c=a|b
然後c
出來是:15
現在可以發現a
如果c
給出?
例如:
b=8
c=15
c=a|b
查找?
而且如果給出x=2<<1
,那麼我們可以得到x=4
。但是,如果4=y<<1
給出我們可以得到y
?
我們不難發現:是否有可能解決位明智算子的方程?
a=7
b=8
c=a|b
然後c
出來是:15
現在可以發現a
如果c
給出?
例如:
b=8
c=15
c=a|b
查找?
而且如果給出x=2<<1
,那麼我們可以得到x=4
。但是,如果4=y<<1
給出我們可以得到y
?
的溶液(如果它存在),例如方程可以被認爲是「唯一」的您允許爲每個比特三種狀態:
例如7 | 00001XXX(binary) = 15
當然,這樣的結果不能轉換爲十進制。
對於某些操作,可能需要指定位寬。
你可以找到解決方程式的a
,但它不會是唯一的。假設b=c=1
然後a=0
和a=1
是解決方案。對於c=1, b=0
將不會有解決方案。這對您考慮的數字中的所有位都有效。如果方程式是可解的a=c
將是(其中一個)解決方案。
左移一個整數將始終導致一個偶數整數(最小有效位爲零)。所以這隻適用於即使迭代。在這種情況下,您可以通過應用右移來反轉操作(>>
)。
爲您的特定情況下,答案是沒有,你解決不了或「撤消」的OR操作(|
),並向左或向右移動(<<
,>>
)因爲在這兩種情況下,信息是通過將丟失操作。例如,8|7=15
和12|7=15
,因此給定了7
和15
,不可能獲得唯一的解決方案。
異常是異或操作,對此確定當a^b=c
,然後b^c=a
和a^c=b
。
對於15 = a |沒有單一的解決方案。 8'。 'a'可以是7或15.並且沒有y這樣'3 = y << 1'。 –
已編輯它這是輸入錯誤。 –
對於左移的情況,您是否對固定大小的整數感興趣(如同其他語言中的典型但也是numpy)或任意大小的整數? – harold