ビットシフト演算子への導入:
まず、我々は、左シフト演算子、x << n
を持っています。これはゼロで新しいビットを埋め、n
ビット左x
内のすべてのビットをシフトします:
1111 1111
<< 3: 1111 1000
次に、我々が署名した右シフト演算子を、x >> n
。これは、新しいビットに符号ビットをコピーし、右nでx
のすべてのビットをシフト:
1111 1111
>> 3: 1111 1111
1000 0000
>> 3: 1111 0000
0111 1111
>> 3: 0000 1111
は最後に、我々はゼロ埋め右シフト演算子、x >>> n
を持っています。これはゼロで新しいビットを埋め、右n
ビットでx
のすべてのビットをシフト:
1111 1111
>>> 3: 0001 1111
あなたも有用かもしれビット単位-またはオペレータ、x | y
。
1010 0101
| 1010 1010
---------
1010 1111
あなたが当面の問題については、前のオペレータを必要とするだけ必要があります。これはオフ、それ以外の場合はx
かy
のいずれかに上だった場合には、新しい番号のビットを設定し、x
とy
の各位置のビットを比較し、しかし、完全を期すために、ここで最後の2つである:
ビット単位、およびオペレータ、x & y
一方に出力のビットを設定した場合とビットが両方x
とy
内にある場合にのみ:
1010 0101
& 1010 1010
---------
1010 0000
ビットが1数または他のではなく、両方でオンになっている場合は、1つに出力ビットを設定x^y
ビット単位のXOR演算子:手元の状況にこれらを適用すること、今
1010 0101
^ 1010 1010
---------
0000 1111
:
ビットを追加および操作するには、ビットシフト演算子を使用する必要があります。文字列の表示に従って右側のビットを設定し、それらをシフトします。バイトの終わりに達するまで続け、次のバイトに移動します。私たちは「1100 1010」のバイト表現を作成したいと言う:
Our byte Target
--------- --------
0000 0000
1100 1010
0000 0001 ^
1100 1010
0000 0011 ^
1100 1010
0000 0110 ^
1100 1010
0000 1100 ^
1100 1010
0001 1001 ^
1100 1010
0011 0010 ^
1100 1010
0110 0101 ^
1100 1010
1100 1010 ^
私は、もちろん、あなたの仕事にこれを適用するためにあなたにそれを残します。
「圧縮バイナリ表現」について、長さが7文字( "program")の単語を表す18文字( "010100111111011000")の 'String'を持っているとします。あなたが頼んでいることを確信していますか?通常、これらのビットをXバイト数(この場合は3)に設定します。 –
'ビットシフト演算子'を調べます: '>>'、 '>>>'、 '<<'。 – Kevin
ブライアン、元のメッセージはバイナリに変換すると56ビットのサイズですが、エンコードされたメッセージはわずか18ビットです。 ケビンは、人々はそれを教え続けますが、私はまだそれらの演算子を使用して、これをバイト配列に変換することができるというリンクを描くことはできません。 –