Целое число со знаком на 5 бит?

Я все еще борюсь с побитовыми операторами, используя Ruby.

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

Как бы вы поступили?

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


person JCLL    schedule 23.01.2012    source источник


Ответы (1)


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

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

Но -2 будет 11110

person weston    schedule 23.01.2012