2012-01-23 3 views
1

Я все еще борюсь с побитными операторами, используя Ruby.Подписанное целое число на 5 бит?

Получение значения 11100 (28 в базе 10) (из битового потока), я хотел бы видеть его как -4, который является целым числом со знаком на 5 бит.

Как вы продолжите?

Я знаю, что общий псевдо-алгоритм говорит: -X = "/ X +1" т.е.: чтобы получить противоположность X, сначала переверните бит X, а затем увеличивайте на 1. Но здесь я застрял!

+0

11100 должно быть -4, нет? –

ответ

2

Iff самый левый бит - это 1, то это отрицательное число.

Итак, возьмите 28 и вычтите 32 (2^5), чтобы получить -4.

Но -2 будет 11110

Смежные вопросы