> 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進)
を答えれば良いという事になります。
お礼
ありがとうございました。 >>質問には「数値を何ビットで表現するか」が明確に書かれていません。 問題が表のようになっていて、「空欄をうめよ」となっています。8桁の2進数が書かれている欄があるので8桁だと思います。すいませんでした。