質問: `基本情報技術者試験` ●nビットで表現できる値の範囲 0~2のn乗-1 例)4ビット (0~15) ●負数を2の補数で表すとき、nビットで表現できる整数の範囲 -2のn-1乗~+2のn-1乗-1 例)4ビット (-8~+7) --- 上の式の意味を4ビットの例で読み取ってください。 負数を2の補数で表すと、一番左の符号ビットが1のものは、負数になります。 とありますが、下記の表を見たとき、 【質問】どのような計算で負数のある10進数が導かれるのでしょうか? --------------------------------- | 0以上の10進数 | 4ビットの2進数 | 負数のある10進数 | | --- | --- | --- | | 0 | 0000 | 0 | | 1 | 0001 | +1 | | 2 | 0010 | +2 | | 3 | 0011 | +3 | | 4 | 0100 | +4 | | 5 | 0101 | +5 | | 6 | 0110 | +6 | | 7 | 0111 | +7 | |9|1001|-7| |10|1010|-6| |11|1011|-5| |12|1100|-4| |13|1101|-3| |14|1110|-2| |15|1111|-1| ※負数を2の補数で表すと、この範囲の値は16を引いた負数になる
回答: > > 【質問】どのような計算で負数のある10進数が導かれるのでしょうか? > > > その2進数の値に`x`を足すと`10000`になる。 `x`を10進数にしたものをマイナス符号にする なぜにマイナス評価 間違っていたり解答になっていない(またはその他)なら理由をコメント欄にて指摘いただきたい ====================================================== 例:その2進数の値=1011 > > その2進数の値(1011)に`x`を足すと`10000`になる。**x = 0101** > > `x`(0101)を10進数にしたも(5)のをマイナス符号にする(-5) > > > | 2進数の値 | 足すと10000になる値(2進数) | 足すと10000になる値(10進数) | 足すと10000になる値(10進数)をマイナス符号にする | | --- | --- | --- | --- | | 1000 | 1000 | 8 | -8 | | 1001 | 0111 | 7 | -7 | | 1010 | 0110 | 6 | -6 | | 1011 | 0101 | 5 | -5 | | 1100 | 0100 | 4 | -4 | | 1101 | 0011 | 3 | -3 | | 1110 | 0010 | 2 | -2 | | 1111 | 0001 | 1 | -1 |