Изменения

оформление списка табличной вики-разметкой, стилевые правки
Строка 13: Строка 13:  
Начало кодирования:
 
Начало кодирования:
   −
                              Предполагаемые вероятности
+
{| class="standard" style="text-align:right"
  1 = 2<sup>0</sup> + ''0'' = 1                 1/2
+
! Число || Значение || Кодирование || Предполагаемая<br />вероятность
  2 = 2<sup>1</sup> + ''0'' = 01''0''                1/8
+
|-
  3 = 2<sup>1</sup> + ''1'' = 01''1''                "
+
| 1 || 2<sup>0</sup> + 0 || 1 || 1/2
  4 = 2<sup>2</sup> + ''0'' = 001''00''              1/32
+
|-
  5 = 2<sup>2</sup> + ''1'' = 001''01''              "
+
| 2 || 2<sup>1</sup> + 0 || 01 0 || 1/8
  6 = 2<sup>2</sup> + ''2'' = 001''10''              "
+
|-
  7 = 2<sup>2</sup> + ''3'' = 001''11''              "
+
| 3 || 2<sup>1</sup> + 1 || 01 1 || 1/8
  8 = 2<sup>3</sup> + ''0'' = 0001''000''            1/128
+
|-
  9 = 2<sup>3</sup> + ''1'' = 0001''001''            "
+
| 4 || 2² + 0 || 001 00 || 1/32
10 = 2<sup>3</sup> + ''2'' = 0001''010''            "
+
|-
11 = 2<sup>3</sup> + ''3'' = 0001''011''            "
+
| 5 || 2² + 1 || 001 01 || 1/32
12 = 2<sup>3</sup> + ''4'' = 0001''100''            "
+
|-
13 = 2<sup>3</sup> + ''5'' = 0001''101''            "
+
| 6 || 2² + 2 || 001 10 || 1/32
14 = 2<sup>3</sup> + ''6'' = 0001''110''            "
+
|-
15 = 2<sup>3</sup> + ''7'' = 0001''111''            "
+
| 7 || 2² + 3 || 001 11 || 1/32
16 = 2<sup>4</sup> + ''0'' = 00001''0000''          1/512
+
|-
17 = 2<sup>4</sup> + ''1'' = 00001''0001''          "
+
| 8 || 2³ + 0 || 0001 000 || 1/128
...
+
|-
 +
| 9 || 2³ + 1 || 0001 001 || 1/128
 +
|-
 +
|10 || 2³ + 2 || 0001 010 || 1/128
 +
|-
 +
|11 || 2³ + 3 || 0001 011 || 1/128
 +
|-
 +
|12 || 2³ + 4 || 0001 100 || 1/128
 +
|-
 +
|13 || 2³ + 5 || 0001 101 || 1/128
 +
|-
 +
|14 || 2³ + 6 || 0001 110 || 1/128
 +
|-
 +
|15 || 2³ + 7 || 0001 111 || 1/128
 +
|-
 +
|16 || 2<sup>4</sup> + 0 || 00001 0000 || 1/512
 +
|-
 +
|17 || 2<sup>4</sup> + 1 || 00001 0001 || 1/512
 +
|-
 +
|… || || ||
 +
|}
   −
 
+
Распределение предполагаемых вероятностей для кодов добавлено для ясности.
Распределение предполагаемых вероятностей для кодов добавлено для понятности.
      
Чтобы декодировать закодированное гамма-кодом Элиаса число следует:
 
Чтобы декодировать закодированное гамма-кодом Элиаса число следует:
Строка 59: Строка 78:  
       for (int a=0; a < l; a++)
 
       for (int a=0; a < l; a++)
 
       {       
 
       {       
           bitwriter.putBit(false); //поместите ноли, чтобы показать сколько бит будут следовать
+
           bitwriter.putBit(false); //поместить нули, чтобы показать, сколько бит будут следовать
 
       }
 
       }
       bitwriter.putBit(true);//пометьте конец нолей
+
       bitwriter.putBit(true); //пометить конец нолей
       for (int a=0; a < l; a++) //напишите биты как простые двоичные числа
+
       for (int a=0; a < l; a++) //записать биты как простые двоичные числа
 
       {
 
       {
 
                   if (num & (1 << a))
 
                   if (num & (1 << a))
Строка 81: Строка 100:  
     while(bitreader.hasLeft())
 
     while(bitreader.hasLeft())
 
     {
 
     {
         while(!bitreader.getBit() || bitreader.hasLeft())numberBits++; //продолжаем вычитку пока не достигнем единицы...
+
         while(!bitreader.getBit() || bitreader.hasLeft())numberBits++; //продолжить чтение пока не встретится единица...
 
         int current = 0;
 
         int current = 0;
         for (int a=0; a < numberBits; a++) //считывание битов numberBits
+
         for (int a=0; a < numberBits; a++) //прочитать numberBits битов
 
         {
 
         {
 
             if (bitreader.getBit())
 
             if (bitreader.getBit())
 
               current += 1 << a;
 
               current += 1 << a;
 
         }
 
         }
         //запишите его как 32х битное число
+
         //записать его как 32-битное число
 
   
 
   
         current= current | ( 1 << numberBits ) ;//последний бит не декодируется!
+
         current = current | ( 1 << numberBits ) ;//последний бит не декодируется!
         for (int a=0; a < 32; a++) //Read numberBits bits
+
         for (int a=0; a < 32; a++) //прочитать numberBits битов
 
         {
 
         {
 
             if (current & (1 << a))
 
             if (current & (1 << a))
Анонимный участник