1

私はこのドキュメントを読んでいました: 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

このメソッドは実際には、floor(log i) のゼロの後に 1 が続き、その後に先頭の 1 を除いたバイナリ コードが続きます。これは、次のように、データ ビットにゼロを散在させることができることを意味します。

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

これは同じ長さですが、単純なシフト ルーチンで実装できます (アセンブリ: 左にシフトし、キャリーが設定されている場合は終了し、そうでない場合は次のビットを形成中の整数にシフトします)。

このアセンブリ シフトとは正確には何ですか? また、可逆性はありますか?

組み立てシフトのアニメーションは素晴らしいでしょう。ありがとう

4

1 に答える 1

2

これはビット シフト操作です。たとえば、このウィキペディアの記事を参照してください: http://en.wikipedia.org/wiki/Bit_shift#Bit_shifts

シフトアウトされたビットは通常、( rotateを除いて) 復元できないため、操作自体は元に戻すことができません。単一のビット位置だけをシフトすると、シフトアウトされたビットの値がフラグレジスタ(引用で言及されているキャリービット)に保存され、条件付きジャンプに使用できるバリアントがあります。

于 2010-08-10T18:09:53.217 に答える