
左シフト演算子<<は最上位ビットの上位を削除して最下位に0を追加、
右シフト演算子>>は最下位ビットが削除されて、最上位ビットに最上位ビットと同じ値が補充される、
論理右シフト>>>は最下位ビット削除され、最上位に0が補充される。
と、ここまではわかりました・・・
ある問題で
int n = -1>> 31;
でnはいくつになるか?というのがあったんですが、
解説の意味がわかりません。
回答はー1です。
「>>演算子によるシフトでは符号ビットが拡張される」
意味がわかりません・・・(@_@)
「>>>演算子であったなら、符号ビットがゼロになるのでN=1となる」
え・・・???!!!
ふごーびっと???
シフト演算子ですから、
「-1の31こ右にビットをシフトする」
んだな・・・と思ったところ、
まったくどう考えてよいのかわからず、
回答を見たところ、余計わからなくなりました。
だれかたすけてください(T_T)
No.2ベストアンサー
- 回答日時:
右シフトの動作はこちらの通りです。
http://www.microsoft.com/japan/msdn/library/ja/j …
右に1ビットシフトしたとき、全体のビットが右に1ビットシフトし、
最上位ビットには符号ビットが入ります。
-1は、全ビットが1で、符号ビット(MSB=最上位ビット)も1ですから、
何ビット右シフトしても常に-1です。
参考URL:http://www.microsoft.com/japan/msdn/library/ja/j …
見逃していました!
右シフトの場合、
最上位にはシフト前の最上位ビットと同じ値が補充される、
とありました。
ありがとうございました!
No.3
- 回答日時:
MovingWalk様のお答えで正しいかと思います。
僕はJAVA経験がないのですが、この手の問題はC言語入門、アセンブリ言語入門でよく問われる問題です。
C言語入門的な書籍のシフト演算子の所を読めば分かりますよ!。
-1は内部的にはFFFFFFFF(h)で表現されている事(2の補数)と算術シフト(符号付)と論理シフト(符号無し)の違いに注意です。
(補足)2の補数の求め方:各桁を反転して最下位ビットに1を加えたもの。
ありがとうございました。
やっとわかりました。
右シフトの場合と、左シフトの場合の違い、
1111 1111 1111 1111 1111 1111 1111 1111
がマイナス1になる、
ということがうまくわかっていませんでした。
No.1
- 回答日時:
まず「2の補数」を理解する必要がありますね。
検索サイトで検索すれば見つかると思います。
後はすぐ理解できると思いますよ。
この回答への補足
2の補数、ちょっと調べてみました。
8ビットで表現できる数は255。
しかし、これだとマイナスを表現できないから、
頭の一ビットを符号用とした。
よって数字部分は後の7ビットを使うから、
表現できる数は、-127~127。
理解が間違っている点はありますか?
問題の場合は31個シフトとありますが、
32ビット数字だと考えろ、ということですか?
1000000000000000000000000000001
(0が30個)
頭の1は符号ビットだから無視されるとして、
1000000000000000000000000000000
となってー0?(マイナス0???)
うーーん。よくわかりません
もう少し考えました。
-1は
1111 1111 1111 1111 1111 1111 1111 1111
でしたね。
31ビット右シフトで・・・
やはり
1000 0000 0000 0000 0000 0000 0000 0000
-0(マイナス0)?????????
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0xffffとは?
-
CASL2(減算命令と比較命令の...
-
C言語で128bitの2進数のビット...
-
8ビットのデータの、先頭ビット...
-
一般のソフトで画像を扱う場合...
-
Delphiでの関数の戻り値を別の...
-
レジストってなんですか?
-
C++ のDLLがdelphiで読めない
-
SRAMとレジスタの違いは何でし...
-
アセンブラ言語がわかりません。
-
昔のゲーム製作に使用する言語...
-
void __cdeclなど_
-
トリムレジスタ
-
アセンブラからC言語に変換する...
-
delphiで使うテキストボックス
-
アセンブリ言語について。
-
GCCの.cfi_系について
-
アセンブラのLA
-
MPLAB IDE v8.92アセンブラにつ...
-
delph5 ボタンの色を変更するに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
C言語で128bitの2進数のビット...
-
ビットシフトってどんな時使うの?
-
「ひまわり」と「なでしこ」の違い
-
[VBS] 素早くローテート演算したい
-
一般のソフトで画像を扱う場合...
-
文字参照は10進数と16進数では...
-
アセンブラプログラムの「数値...
-
x86のJP命令について。
-
命令について
-
VB.net
-
03分22秒36のような時間の単位...
-
verilog 符号付加減算(最上位...
-
e(自然対数の底)を100桁以上出...
-
代入の書き方で質問です。
-
マイクロコンピューター制御の...
-
光コンピュータについて
-
アセンブリの論理演算命令のCPL...
-
符号無し整数xを右にnビット回転
おすすめ情報