2013-02-24 138 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年答案。)