Что такое монтажная смена? - PullRequest
       19

Что такое монтажная смена?

1 голос
/ 10 августа 2010

Я читал этот документ: http://www.fadden.com/techmisc/hdc/lesson11.htm

В нем он заявил:

Проблема в том, что мы не знаем, сколько это будет.Итак, мы кодируем длину с помощью унарного кодирования, которое мы рассмотрели вначале (двоеточия добавлены для ясности):

 value     binary coding
 1         1:
 2         01:0
 3         01:1
 4         001:00
 5         001:01
 16        00001:0000
 64        0000001:000000
 256       000000001:00000000

Этот метод на самом деле является нулем пола (log i), за которым следует 1, за которым следует двоичный кодкод без начального 1. Так как первая часть представляет собой унарный счет, для каждого бита во второй части есть один «0».Это означает, что мы можем чередовать биты данных с нулями, например:

 value     binary coding
 1         1
 2         001
 3         011
 4         00001
 5         00011
 16        000000001
 64        0000000000001
 256       00000000000000001

Это имеет ту же длину, но может быть реализовано с помощью простой процедуры сдвига (сборка: сдвиг влево, если перенос установлен, затем выход, иначе сдвиньте следующий бит в целое число, которое мы формируем).

Что такое этот сдвиг сборки и является ли он обратимым, то есть может ли 00000000000000001 вернуться к 00000000100000000 без дополнительных данных?

Анимация смены сборки была бы превосходной.Спасибо

1 Ответ

1 голос
/ 10 августа 2010

Это операция сдвига немного, см., Например, эту статью в Википедии: http://en.wikipedia.org/wiki/Bit_shift#Bit_shifts

Сдвигаемые биты обычно не восстанавливаемы (за исключением rotate ), поэтому операция сама по себе необратима. Существуют варианты, когда при сдвиге только на одну позицию бита значение смещенного бита сохраняется в регистре флага (бит carry , упомянутый в вашей цитате), где вы можете использовать его для условный переход.

...