2017-08-12 62 views
1

我們不難發現:是否有可能解決位明智算子的方程?

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

+0

對於15 = a |沒有單一的解決方案。 8'。 'a'可以是7或15.並且沒有y這樣'3 = y << 1'。 –

+0

已編輯它這是輸入錯誤。 –

+0

對於左移的情況,您是否對固定大小的整數感興趣(如同其他語言中的典型但也是numpy)或任意大小的整數? – harold

回答

1

的溶液(如果它存在),例如方程可以被認爲是「唯一」的您允許爲每個比特三種狀態:

  • 位0
  • 位爲1
  • 不物質X

例如7 | 00001XXX(binary) = 15

當然,這樣的結果不能轉換爲十進制。

對於某些操作,可能需要指定位寬。

0

你可以找到解決方程式的a,但它不會是唯一的。假設b=c=1然後a=0a=1是解決方案。對於c=1, b=0將不會有解決方案。這對您考慮的數字中的所有位都有效。如果方程式是可解的a=c將是(其中一個)解決方案。

左移一個整數將始終導致一個偶數整數(最小有效位爲零)。所以這隻適用於即使迭代。在這種情況下,您可以通過應用右移來反轉操作(>>)。

0

爲您的特定情況下,答案是沒有,你解決不了或「撤消」的OR操作(|),並向左或向右移動(<<>>)因爲在這兩種情況下,信息是通過將丟失操作。例如,8|7=1512|7=15,因此給定了715,不可能獲得唯一的解決方案。

異常是異或操作,對此確定當a^b=c,然後b^c=aa^c=b

相關問題