左シフト演算子<<は最上位ビットの上位を削除して最下位に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で質問しましょう!
似たような質問が見つかりました
- 情報処理技術者・Microsoft認定資格 2進数の問題を教えてください。 1 2022/07/27 09:42
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- 情報処理技術者・Microsoft認定資格 情報技術の問題についてです。 10進数の−36を以下のような16ビットの浮動小数点表示にするといくつ 3 2022/05/21 19:53
- Oracle ビットで表せる数値について 3 2022/09/12 16:37
- スピーカー・コンポ・ステレオ DAC[について・・・ 1 2022/08/29 11:44
- 物理学 量子コンピュータは量子ビットというものを使って計算するらしいですが、量子を箱の中に入れた状態で計算し 1 2023/02/12 19:29
- 電車・路線・地下鉄 ITパスポート試験問題 7 2023/01/25 09:51
- ネットワーク 以下の問題を教えてください ホストを50台収容するLAN上のネットワークを構成したい。ネットワークア 2 2022/06/18 20:07
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- 計算機科学 2進数の計算について 2進数の値は全て8ビットで負数は2の補数形式とする。結果が8ビットで表現出来な 3 2023/07/22 14:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
16進数でのAND演算
-
ULONGLONGよりも大きい整数を扱う
-
命令について
-
ビットシフトってどんな時使うの?
-
8ビットのデータの、先頭ビット...
-
符号無し整数xを右にnビット回転
-
剰余の法が大きい場合のアルゴ...
-
コンピュータが処理できるビッ...
-
アセンブリ言語の質問のコト
-
整数除算の意味とは?
-
パソコンに使われているn進法は...
-
CASLIIでかけ算
-
アルゴリズムの計算量とオーダ
-
三菱PLCについて聞きたいです。...
-
BigDecimal小数計算について
-
ビット立つの意味
-
if($a & $b) の意味
-
算術右シフトの結果が1/2になる...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
8ビットのデータの、先頭ビット...
-
ビットシフトってどんな時使うの?
-
verilog 符号付加減算(最上位...
-
一般のソフトで画像を扱う場合...
-
符号無し整数xを右にnビット回転
-
文字参照は10進数と16進数では...
-
シーケンス制御についての質問...
-
BMP画像のネガを作成するプログ...
-
アクセス(2003)のVBAでビット...
-
03分22秒36のような時間の単位...
-
命令について
-
10進数(+-)→2進数への変換(2)
-
C言語で128bitの2進数のビット...
-
1の補数
-
ビット列を表示するプログラム
-
Python: 数値を反転させたい
-
ビットの取り出し方法
-
PS3に搭載されている"Cell"は、...
おすすめ情報