Как преобразовать десятичный в переменный байт-код и гамма-код

Как преобразовать десятичное число 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
Другие вопросы по тегам