数え上げ符号(かぞえあげふごう)は、符号化方式の1つ。次の手順で符号化を行う。

  • 符号化の対象(情報系列)の1情報ブロック中にある "1" の個数(ハミング重み)を数える。
  • "1" の個数と情報ブロックの長さを定めると 0と 1 の組み合わせも限られるので、0 と 1 の組み合わせを列挙し、情報ブロックが何番目の組み合わせと一致するかを数える。
  • "1" の個数を2進数表現したものと、何番目のバイナリ系列と一致したかを数え、2進数表現したものを組み合わせて符号語とする。

下記の例のように符号化後の方がより多くのビットを使用する場合もある。この例では圧縮としての符号化を目的としたものではない。この符号化方式をナップサック暗号に組み合せると、よく知られた攻撃法を回避できるという提案もある。


 01011007 "1" 7 3352 6 3+6=9 使

STEP1 "0101100"  "1" 

"1" 3

STEP2"1" 377C3 = 35 

"0000111","0001110","0011100","0111000","1110000",

"0001011","0010110","0101100","1011000","0001101",

"0011010","0110100","1101000","0010011","0100110",

"1001100","0010101","0101010","1010100","0011001",

"0110010","1100100","0100011","1000110","0100101",

"1001010","0101001","1010010","0110001","1100010",

"1000011","1000101","1001001","1010001","1100001"

 "0101100" 358

STEP3
3を2進数表現したもの "011"
8番目の符号である事を示す 8 を2進数表現したもの "001000"
上の二つを連結した "011001000" を数え上げ符号とする。

関連項目

編集