Двоичный номер в компактной форме - PullRequest
0 голосов
/ 11 января 2020

Можем ли мы представить двоичное число в компактной двоичной форме.

Например,

4294967295 (decimal) -> 11111111111111111111111111111111 (binary, 32 bits)

Можем ли мы представить это двоичное значение в компактной двоичной форме. т.е. меньше 32 бит?

Есть ли способы сделать что-то вроде представления числа в степенях 2, или установки контрольных битов, или упаковки битов и т. Д. c, с результирующими двоичными битами меньше 32?

Итак

11111111111111111111111111111111 (binary, 32 bits) = 2^32 - 1

будет сжат, скажем, например,

101111111 (binary, 9 bits) 

, где последние 2 бита (MSB - 10) представляют 2, а следующие 5 бит (11111) представляют 32, следующий 1 бит (1) представляет «-» (отрицательная операция), а следующий 1 бит (1) представляет 1.

Аналогично,

00000000000000000000000000010011 (binary, 32 bits) = 2^4 + 3

будет сжат, скажем, например,

10100011 (binary, 8 bits) 

, где последние 2 бита (MSB - 10) представляют 2, следующие 3 бита (100) представляют 4, следующий бит (0) представляет «+» (сложение) и следующие 2 бита ( 11) представляет 3.

Можем ли мы сделать это для всего диапазона чисел от

00000000000000000000000000000000 (binary, 32 bits) to
11111111111111111111111111111111 (binary, 32 bits)

, где каждое результирующее число должно быть меньше 32 бит?

Примечание : он не ограничен 32 битами. Мы можем даже рассмотреть 64 или 128 бит или больше, чем это. Кроме того, для некоторых больших чисел, которые не могут быть представлены управляющими символами, мы можем представить число как есть, которое все еще может быть меньше 32 бит.

Спасибо.

...