LoginSignup
2
3

More than 5 years have passed since last update.

N進数の復習(10進数との変換、負数の表現)

Posted at

N進数の小数と10進数の小数の変換

10進数(整数) -> N進数(整数)
10進数をNで割り続けて、 余りを下から読むとN進数

10進数(小数) -> N進数(小数)
10進数にNを掛け続けて、整数部分を順に読むとN進数

N進数 -> 10進数
N進数の各桁の数字にN^(桁数)を掛けてあげる

プログラム上では...

例えば10進数の0.3は、
2進数で表すと循環小数になってしまうため、
有限なメモリを使う以上は、
その部分で誤差が生じてしまう。
(JavaではBigDecimal型なら誤差が生じない)

負数の表現(8桁の2進数を例に)

a. 符号付き絶対値表現
2進数の場合、最も大きな位が0なら+、1なら-。
それ以降の7桁が絶対値を示す。
01111111 = +127 ~ 11111111 = -127
00000000 = +0, 10000000 = -0 で重複。

b. 1の補数
ある数 + その数の1の補数 = 11111111
として、それらを10進数に変換した際、
ある数(10) + 1の補数(10) = 0
となるように、1の補数と負数を対応づける。
00000000 = +127 ~ 11111111 = -127
01111111 = +0, 10000000 = -0 で重複。

c. 2の補数(完全補数)
ある数 + その数の2の補数 = 100000000(9桁)
として、それらを10進数に変換した際、
ある数(10) + 2の補数(10) = 0
となるように、1の補数と負数を対応づける。
01111111 = +127 ~ 10000000 = -128
00000000 = 0 と1つに定まるので、
a, bに比べ、表現できる数が1つ増える。
(Javaのbyte型はこの例と同じ)

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3