2016-03-20 7 views

答えて

4

それは、arithmetic right shift operator(リンクのページ19-20を参照)です。 Javaとは逆のケースです(Java >>は算術右シフトですが、>>>は論理右シフトです)。

算術右シフトは右シフト数はこの現象と負/正である場合を取り扱うことである:ビット

右シフト指定された数、 発現が署名されている場合、符号ビットの値で埋め、

1000 1100 
--------- >>> 2 
1110 0011 //note the left most bits are 1 
:othewiseあなたがの価値を持つ signed表現を持っている場合は、次のように言って、説明するためにゼロ

で埋めます

しかしunsignedのために:

1000 1100 
--------- >>> 2 
0010 0011 

左が最も0で満たされます。

+0

こんにちはイアン、私は2ビットシフトするときに私はあなたに尋ねることができます私は4を分割していると言って正しいです。同様に、私は8ビットをシフトするとき私は256で割っていますか?ありがとう! – user292965

+0

@ user292965こんにちは、もう一度あなたです。 ;)あなたは近づいています*そのように見えます*右にシフトされたビットが数値に変換されると元の半分になります。しかし、算術的なシフトを仮定する...シフトは、例えば、負の数の「論理右シフト」の場合のように、分割と等しくない場合がある。 – Ian

+0

私はそれを試しました:)。ラウンドアップまたはラウンドダウンした後の最終結果がわかっていますか?あなたの例から、それは丸められるように見えます。 – user292965

関連する問題