![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.3ベストアンサー
- 回答日時:
補数となると「1の補数」と「2の補数」があって、ちょっと複雑です。
補数ではなく「負数」となると、意外と単純。
負数は単に「符号ビットが1になっている数値」です。
で「符号ビット」は、普通は「任意のビット数で数値を表す時、最上位のビット」を使います。
例えば「2ビットで数値を表す時、最上位ビットが1なら負数、0なら正数」と決めると、表現出来る数値は以下の4つです。
10 -2
11 -1
00 0
01 1
ここで「『-1』に1を足すと『0』になる」と言う数学のお約束があるので「-1」は「11」になります。
実際「11」に「1」を足すと「00」になります(「100」にはなりません。3ビット目は溢れて消え、下の2ビットの「00」だけ残ります。
上記の例では「2ビットで数値を表す時」でしたが、これが「8ビットで」「16ビットで」「32ビットで」となると、以下のようになります。
8ビット
11111101 -3
11111110 -2
11111111 -1
00000000 0
00000001 1
00000010 2
8ビットでは、-128~-1、0、1~127を表現できます。
16ビット
1111111111111101 -3
1111111111111110 -2
1111111111111111 -1
0000000000000000 0
0000000000000001 1
0000000000000010 2
16ビットでは、-32768~-1、0、1~32767を表現できます。
32ビット
11111111111111111111111111111101 -3
11111111111111111111111111111110 -2
11111111111111111111111111111111 -1
00000000000000000000000000000000 0
00000000000000000000000000000001 1
00000000000000000000000000000010 2
32ビットでは、-2147483648~-1、0、1~2147483647を表現できます。
8進数、16進数の時は、上記の2進数を単純に8、16進数に変換するだけです。
例えば、質問にある-6から0までを8ビットで表現するなら
11111010 -6 372(8) FA(16)
11111011 -5 373(8) FB(16)
11111100 -4 374(8) FC(16)
11111101 -3 375(8) FD(16)
11111110 -2 376(8) FE(16)
11111111 -1 377(8) FF(16)
00000000 0 000(0) 00(16)
となります。
ここで注意が1つだけ。「数値が何ビットで表現されているか?」が判っていないと、符号ビットの位置が決まらないので、8進数/16進数で書かれた数値を見ただけでは、数値が正数か負数か判断する事は出来なくなります。
例えば、6ビットの世界での-1を、2進、8進、16進にしてみます。2進では「111111」、8進では「33」、16進では「3F」になります。
-1が16進数で3Fになりましたが、ここで、16進数を知っている人に「16進数の3Fって、10進数で幾つ?」って聞いてみましょう。たいていの人が「63」と答えます。-1と答える人は居ない筈です。
なぜ全員が「63」と答えるかと言うと、質問に「数値を6ビットで表現した場合で」「最上位ビットは符号ビットで」と言う条件を示していないからです。
さて、ここで、質問への回答を考えてみます。
「10進数の -6と-51を2,8,16進数で表すにはどうすればいいのですか?」と言う質問ですね。
質問には「数値を何ビットで表現するか」が明確に書かれていません。何ビット分の2進数にするか、何ビット分の8進数にするか、何ビット分の16進数にするか、が判らなければ、符号ビットの位置も決められず、何桁書けば良いのかも判りません。
そうすると、質問の答えは、
「2、8、16進数にする時のビット数が不明なので、符号ビットの位置が決められず、2、8、16進数に変換する事が出来ない」
と言う事になります。
「マイナスが入るとどうすればいいのかわからないです。」については、
・数値を何ビットで表現するか決める
・何ビットで表現するか決めたら、最上位ビットを符号ビットにする
・「-1は全部のビットが1になる」と言うお約束(-1に1を足すと0になるお約束の事)を元に、求めたい数値を2進数にする(-1から順に1づつ引いても良いし、1、2、4、8、16、32づつ引いても良いし、補数を使って求めても良い)
・2進数から、8進、16進数にする
と言う方法で各進数に変換して下さい。
この回答へのお礼
お礼日時:2004/11/05 22:19
ありがとうございました。
>>質問には「数値を何ビットで表現するか」が明確に書かれていません。
問題が表のようになっていて、「空欄をうめよ」となっています。8桁の2進数が書かれている欄があるので8桁だと思います。すいませんでした。
No.6
- 回答日時:
桁数が書いてないと問題として不適切だと思いますが、No.3の補足を見ると2進数は8桁で求めるんですね。
-6の場合、
2進数・・・数字を2進数にして1の補数に1を足す
6→00000110→11111001→11111010
8進数・・・数字を8進数にして7の補数に1を足す(とりあえず3桁)
6→006→771→772
16進数・・・数字を16進数にして15の補数に1を足す(2桁)
6→06→F9→FA
※N進数の(N-1)の補数は、各桁の数字を(N-1)から引きます。
No.5
- 回答日時:
No.2 です。
> 2進数の足し算、引き算、やったことがありません。。。
10進数と全く同じですよ。
下の位から順に足していって、繰り上がったらひとつ上の位に渡す。例えば 3+6 = 13 を2進数でやると、
00000011
00000110
--------
00001001
です。小学校でやった足し算の筆算を思い出しながらやってみてください。
さて、ここからが計算機上で負の数を2の補数表示にしている最大の理由ですが、例えば、4 + (-2) のような負の数が混じった計算でも、全く同じやり方で計算できてしまいます。
00000100
11111110
--------
00000010
4の位(右から3つめ)で繰り上がった1が、左に伝播していって最終的に左から溢れてしまいますが、無視します。
ちゃんと答が2になっていますね。
-3 + -2 のような負の数どうしの計算も試してみましょう。
11111101
11111110
--------
11111011
しっかり-5になっています。
引き算も同じです。上の3つの例で普通に引き算の筆算を試してみればわかると思います。
No.4
- 回答日時:
> 2,8,16進数で表すには
2進数の表し方に「1の補数」「2の補数」があるのは教科書に書いていますよね。
10進数の場合で補数というのは、ある数を足して99…9とか、100…0とかの数になる数の事です。
10進数の場合で、7に対する9の補数は2、7に対する10の補数は3となります。
10進数の場合で、123に対する9の補数は876、123に対する10の補数は877となります。
--
2進数の6は110です。
プラスの場合は頭に0、マイナスの場合は頭に1をつける事にします。
+6=+110=0110
-6=-110=1110
これも正負の数値の表現方法のひとつです。
問題は、
+6=0110
-6=1110
を符号を無視して足し算すると、
10100
となり、0にはなりません。
常に先頭の符号を見ながら、0なら足し算、1なら引き算とせねばならず、コンピュータで扱うのに非常に都合が悪い事になります。
そこで、
+6=0110
-6=????
を足して
10000
となるように????の部分を決めてしまえば、足し算と引き算を区別しなくてすむじゃん?
という考え方が出てきます。
この場合は、????の部分は10000から0110を引き算して得られます。
この考え方が2進数での2の補数に相当します。
--
> 10進数の -6と-51
> を2,8,16進数で表すにはどうすればいいのですか?
ですから、プラスの数
6=0110(2進)=06(8進)=06(16進)
を足して、
10000(2進)、100(8進)、100(16進)
となる
????(2進)、??(8進)、??(16進)
を答えれば良いという事になります。
No.2
- 回答日時:
まだ締め切られてませんが、全く同じ質問が前に出ていますのでご参考に(下記URL)。
どちらの質問者の方も勘違いされているのかもしれませんが、
10進数の-6を2進数表示 → -110
というのが正しいんですよ。
2の補数表示というのは、計算機上ではそのように負の数を表現したほうが、いろいろと都合がいいのでそうしているだけです。
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1069969
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) <スプレッドシート>IF関数の複数条件について 5 2022/10/27 14:38
- Excel(エクセル) エクセルのマイナス表示 3 2022/03/28 16:35
- 労働相談 労働時間が五、六時間 その弐 2 2023/04/04 12:36
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- 哲学 ウソの問題:ウソを平気でつきつづけるようになれるわけ 10 2022/05/22 22:07
- Excel(エクセル) 【Excel関数】IF関数(時間計算) 2 2022/10/09 15:26
- 仮想通貨(暗号通貨) 仮想通貨に関して 超少額 2 2022/05/08 13:14
- Excel(エクセル) Excel 時間の引き算でマイナスを表示させることは出来ますか 3 2023/06/14 21:54
- その他(職業・資格) 第二種衛生管理者の過去問題で4月公表、10月公表というものがありますが試験問題は流用されますか? 1 2023/05/05 20:12
- 数学 統計学の問題です。 2 2023/07/28 01:20
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
-2の二乗と(-2)の二乗の違いに...
-
マイナスの数値どうしの対比
-
2マイナス2乗っていくつ?
-
-(マイナス)の以上と以下について
-
達成率の計算方法 マイナス計画...
-
−3分のπって単位円のどこになる...
-
1-(-1)=2の理由を教えてくださ...
-
目標値がマイナスの場合の達成...
-
ルートの中がマイナスの二乗の場合
-
マイナス2の倍数 「マイナス2は...
-
マイナス-マイナスはなぜプラ...
-
四則の混じった計算 かっこの中...
-
ゼロの意味
-
√の質問です
-
目標がマイナスの時の達成率の...
-
補数
-
因数分解のマイナスのくくりだ...
-
2桁のマイナスとは?
-
マイナス乗
-
マイナスの掛け算について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
-2の二乗と(-2)の二乗の違いに...
-
マイナスの数値どうしの対比
-
-(マイナス)の以上と以下について
-
2マイナス2乗っていくつ?
-
達成率の計算方法 マイナス計画...
-
−3分のπって単位円のどこになる...
-
マイナス-マイナスはなぜプラ...
-
目標値がマイナスの場合の達成...
-
ハイパー演算子について
-
1-(-1)=2の理由を教えてくださ...
-
ベクトル空間の和空間の質問
-
マイナス2の倍数 「マイナス2は...
-
ー(X +1)二乗 これって二乗し...
-
数字の桁の最高と最低は?
-
四則の混じった計算 かっこの中...
-
計画達成率
-
職場での癒し系、清楚、おしと...
-
ルートの中がマイナスの二乗の場合
-
マイナス記号における括弧の使い方
-
-3分の2(-3/2)は、有理数...
おすすめ情報