Как преобразовать десятичный в переменный байт-код и гамма-код - PullRequest
3 голосов
/ 13 декабря 2011

Как преобразовать десятичное число 777 в эквивалентные коды VB и гамма?

Я читал по гамма-кодам. Я вижу, откуда они получают унарные коды из десятичного числа, а не откуда берется длина и смещение. Я также понимаю, что гамма-код - это просто длина (унарного кода), объединенная со смещением.

Ответы [ 2 ]

7 голосов
/ 02 января 2015

777 в двоичном коде: 1100001001

Гамма-код

  • вычисление смещения: удаление первого 1 - 100001001
  • вычислить длину: сколько бит смещения (9 бит) в унарном коде 1111111110 (девять единиц и один 0)
  • сложить их вместе 1111111110100001001

VB-код

  • Получить последние семь бит из двоичного кода 1100001001 is 0001001 , добавьте 1 в качестве бита "заголовка" ( 0001001 -> 10001001 ), поскольку в исходном двоичном коде еще осталось 3 бита.
  • Получите оставшиеся 3 бита, на этот раз используйте 0 в качестве бита "заголовка" ( 110 -> 00000110 ), поскольку в исходном двоичном коде нет остатка
  • соедините эти два байта вместе 0000011010001001 - это код VB.

В сущности, код VB разделяет пробел (в двоичном виде) на 7-битные разделы и устанавливает континуумБит / 1-й бит последнего / правого большинства 7-битовых частей в 1 и продолжения всех остальных частей в 0.


1 голос
/ 30 ноября 2012

777 в двоичном коде: 1100001001

  • VB-код: 00000110 10001001 (начните заполнять 7 байтов, если вы не закончили ставить 1 на 8-й бит, иначе 0)
  • гамма-код: 1111111110100001001
  • смещение: 100001001
  • длина: 1111111110
...