Как преобразовать десятичный в переменный байт-код и гамма-код
Как преобразовать десятичное число 777 в эквивалентные коды VB и гамма?
Я читал о гамма-кодах. Я вижу, откуда они получают унарные коды из десятичного числа, а не откуда берется длина и смещение. Я также понимаю, что гамма-код - это просто длина (унарного кода), соединенная со смещением.
2 ответа
777 в двоичном коде это 1100001001
- Гамма-код,
- Рассчитать смещение: удалить первое 1 - 100001001
- вычислить длину: сколько бит смещения (9 бит) в унарном коде 1111111110 (девять 1 с и один 0)
- положить их вместе 1111111110100001001
- Код VB,
- Получите последние семь битов из двоичного кода 1100001001: 0001001, добавьте 1 в качестве бита " заголовка " (0001001 -> 10001001), поскольку в исходном двоичном коде еще осталось 3 бита.
- Получите оставшиеся 3 бита, на этот раз используйте 0 в качестве "головного" бита (110 -> 00000110), потому что в исходном двоичном коде нет остатка
- соедините эти два байта 0000011010001001 - это код VB.
777 в двоичном коде: 1100001001
- Код VB:
00000110 10001001
(начать заполнять 7 байтов, если вы не закончили ставить1
на 8-й бит еще0
) - гамма-код:
1111111110100001001
- смещение:
100001001
- длина:
1111111110