2013-07-19 22 views
-1

我想用xor來計算我在matlab中的雙精度數,但是bitxor只能用於int數。有一個函數可以在Matlab中將double轉換爲int嗎?如何使用雙數的Bitxor?

+1

你能解釋一下爲什麼你要將bitxor應用到雙精度上嗎?只有可能有更簡單的方法來實現你的目標。 –

+0

在我的程序中,我需要在0,1之間使用雙數字。使用位xor我應該怎麼做? –

+0

@ saba2085但是你是否說你想找到像0.2343和0.789787的xor例如?因爲在那種情況下你如何定義xor?鑄造到一個整數將四捨五入... – Dan

回答

0

您可以直接轉換爲整數:

a = 1.003 

int8(a) 

ans = 

1 

,給你一個8位有符號整數,你還可以得到其它尺寸即int16否則無符號即uint8取決於你想要做

什麼
+0

不是這樣,我想完整保存我的電話號碼。我的電話號碼就像這些0.5,0.789 ...,我想保留這個表格。 –

+0

那麼什麼是xor'雙打?你如何定義它? – Dan

+0

在我的程序中查看我將我的號碼[0,256]更改爲[0,1]之間的數字,我想使用bitxor作爲我的號碼和一些隨機數字([0,1]之間)。就像這樣0.789 ---> 789 –

1

您正在查找的功能可能是:int8(number)int16(number),uint32(number)它們中的任何一個都會將Double轉換爲整數,但您必須爲您想要達到的結果選擇最好的一個。請記住,無法將數字四捨五入而不能從Double轉換爲Integer。

如果我正確地理解了你,你可以創建一個函數,只需將起始值乘以2^n,然後使用前面提到的任何函數將其轉換爲Integer,即可從Double數中刪除「逗號」執行任何你想要的,然後通過將數字除以2來返回逗號到原來的位置2^n

將起始值乘以2^n是一種破解,它會減小舍入誤差。 n的最佳值爲逗號後的數字個數,如果這個數字相對較小。

另請註明,您爲什麼試圖做到這一點?這似乎不是最佳解決方案。

+1

我認爲乘以'2^n'可能更有意義? – Dan

+0

@丹當然,謝謝! –

+0

我有模糊細胞自動機雙數字。在實現的每個階段,我想使用元胞自動機規則,然後使用bitxor得到結果和一些隨機數,然後使用位xor保存到下一階段的元胞自動機。 –