2013-02-24 135 views
0

我試圖將int轉換爲二進制,然後對二進制執行按位運算。將int轉換爲二進制,對其執行按位運算

我目前的方法是採取整數,呼籲to_s(2)上,但我留下一個二進制字符串。

有關我該怎麼做的任何建議?

+2

*一切*都是二進制的。唯一的區別在於文字表示。在計算機中,不存在十進制或十六進制數字。只有二​​進制。 – Linuxios 2013-02-24 17:46:20

+0

好吧,有一些庫或語言具有真正的「十進制」類型,實際上可能會使用不同的內部表示(通常是爲了避免與傳統的浮點表示相關的問題)。然而,普通的「整數」類型在內部幾乎總是二進制的。 – nneonneo 2013-02-24 17:50:58

+0

(是的,我意識到任何表示都可以歸結爲最低級別的二進制;) – nneonneo 2013-02-24 17:51:58

回答

0

the_number.to_s(2).split('').map { |x| x.to_i }#轉換爲數字的二進制數組

+1

解釋爲什麼這是正確的答案。如果OP也從中學習,提供正確的答案會有更多的幫助。 – 2013-02-24 18:10:33

+0

我明白了這一點。可以將字符串映射到字符串中,然後對每個字符將其轉換爲int。 – 2013-02-24 19:34:39

+0

@BrianA你的意思是the_number.to_s(2).to_i? – 2013-02-25 01:04:44

6

簡單的整數在幾乎所有主要的編程語言(包括Ruby)中都以二進制形式存儲。所以,你可以做的整數自己的位操作:

>> 6 | 5 # bitwise or 
=> 7 
>> 6 & 5 # bitwise and 
=> 4 
>> 6^5 # bitwise xor 
=> 3 
>> 6 >> 2 # right shift 
=> 1 
>> 6 << 2 # left shift 
=> 24 

(編輯:這似乎是我1000年答案。)