извлечь бит в Ruby Integers - PullRequest
       0

извлечь бит в Ruby Integers

6 голосов
/ 18 августа 2011

Мне нужно получить n-й бит целого числа, со знаком или без знака, в Ruby.

x = 123 # that is 1111011
n = 2   # bit 2 is ...0 

Следующий фрагмент кода не работает в общем случае:

x.to_s(2)[-(n+1)] #0 good! but...

из-за отрицательных чисел, не представленных как 2-дополнение:

-123.to_s(2) # "-1111011"

Так как же продолжить?

Ответы [ 3 ]

12 голосов
/ 18 августа 2011
x = 123 # that is 1111011
n = 2   # bit 2 is ...0

x[n]    # => 0

-123[2] # => 1
4 голосов
/ 18 августа 2011
def f x, bit
  (x & 1 << bit) > 0 ? 1 : 0
end
3 голосов
/ 18 августа 2011

Вы можете попробовать Bindata lib .

Существует функция для представления двоичного представления целого числа в виде строки, и после этого вы можете делать с ней все, что вам нравится.1005 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...