数の表現
[教科書2.2.2]
数の情報表現の使い分けは以下のようになっている。
- 対象: 自然数、整数、実数
- 目的: 計算、表示
- 方法: 対象と目的に応じていろいろある。以下を参照せよ。
アンケート
自然数の表現
- インド・アラビア数字: 1907。10種類の記号と位取り記数法。計算が簡単。1963+41。比較的改竄されやすい。
- ローマ数字: MCMVII。I, V, X, L, ...の組み合わせによる記数法。計算は難しい。MCMLXIII+XLI。比較的改竄が難しい。
- 漢数字: 一九百七。壱, 弐, ...の の組み合わせによる記数法。計算は難しい。比較的改竄は難しい。(追加しにくいように金壱萬弐阡円也のように表記する)
- コンピュータでは2進法(0と1だけによる表現)がもっぱら使われる。
- ビット: "0"と"1"の2種類の記号
- 2を基数とした数の表現。
k桁目がbkの時、
を表すことにする。
2を基数とする理由
- 計算に関する性質(例えば、a+b=b+aというようなもの)は10進数と同じ
8進数・16進数をコンピュータの内部のデータの表現として使うこともある。
- 3桁か4桁毎に2進数と揃うので、変換が簡単である
- 2進法より桁が少なくなるので、人間にとって特徴をつかみやすい
|
10進法 | 2進法 | 8進法 | 16進法 |
|
0 | 0000 | 00 | 0 |
|
1 | 0001 | 01 | 1 |
|
2 | 0010 | 02 | 2 |
|
3 | 0011 | 03 | 3 |
|
4 | 0100 | 04 | 4 |
|
5 | 0101 | 05 | 5 |
|
6 | 0110 | 06 | 6 |
|
7 | 0111 | 07 | 7 |
|
8 | 1000 | 10 | 8 |
|
9 | 1001 | 11 | 9 |
|
10 | 1010 | 12 | A |
|
11 | 1011 | 13 | B |
|
12 | 1100 | 14 | C |
|
13 | 1101 | 15 | D |
|
14 | 1110 | 16 | E |
|
15 | 1111 | 17 | F
|
電卓を使って進数の関係を調べたり、計算してみよう。
「アプリケーション」→「電卓」で電卓を起動してから、メニューで「表示」→「プログラマ」を選ぶと16進電卓に変身する。
Hex, Oct, Decで16進、8進、10進の表示を変更できる。
2進法の101010は10進法ではいくつか?
10進法の108は16進法ではいくつか?
無人のはずのビルを見たら以下のように明かりがついていた。
■□■■■
■■□■□
■□□■■
□■■■■
■■■■■
■□■■□
■□□■□
■■■■■
□■□■■
□■■□■
■■■■□
□■■■■
□■■■■
■■□■□
■■□■■
ここから隠れたメッセージを読み取ることはできるか?
なお、アルファベットに1から順に番号をつけると次のようになる。
|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
|
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z
|
負を含む整数の表現
負の整数を表す方法には2種類ある。
図による説明
|
10進法 | 2進法(2の補数表現) |
|
0 | 0000 |
|
1 | 0001 |
|
2 | 0010 |
|
3 | 0011 |
|
4 | 0100 |
|
5 | 0101 |
|
6 | 0110 |
|
7 | 0111 |
|
-8 | 1000 |
|
-7 | 1001 |
|
-6 | 1010 |
|
-5 | 1011 |
|
-4 | 1100 |
|
-3 | 1101 |
|
-2 | 1110 |
|
-1 | 1111
|
xの2の補数の求め方(nビットで)
-
の各ビットの0と1を逆転させる。これを
の1の補数という。xの1の補数に
に加えると各ビットが1になるので
となる。
- 1の補数に1を加える。これに
を加えると
になるので2の補数である。
例: 3の2の補数を求める(n=4ビットで)
- 3を2進数で表すと0011
- 0と1を逆転させると1100
- 1100に1を足すと1101
1101と0011を足すと10000なので、1101は0011の2の補数となっている。
注意: nが小さいと正しく計算できない。例えば、上の計算でn=2ビットだと、
- 3を2進数で表すと11
- 0と1を逆転させると00
- 00に1を足すと01
で、01は1なので何か変。
n=2ビットの場合、2の補数表現で表現できる範囲は以下のとおりなので、そもそも3は表現できず、その補数も表現できる範囲外である。
-23を2の補数を16進で表現するとどうなるか?(16ビットで表すとする)
小数点のある数の表現
小数点のある数の表現には2種類ある。
- 固定小数点数: n桁のうちm桁を小数とした数
- 会計処理など、計算仕方が決まっている場合に用いる。0.99 per songなど。
- 精度より速度を重視する場合に用いる。
具体的な方法
- n桁のうちm桁を小数として、表したい数
を
倍したものを整数として表現する。
- k桁目がbkのビット列で
を表すことになる。
- 例: 8桁のうち4桁を小数とする場合、
3.13の表現: 3.13x24=50.8→110010
実際に表されている数: 110010 → 21+20+2-3 = 3+(1/8)=3.125
- 表すことができる範囲は以下の浮動小数点による表現と比べて狭い。
- 浮動小数点数: 小数点の位置も情報として持たせた数
- 科学技術計算のようにできるだけ精度を上げたい場合に用いる。
- 整数の計算より時間がかかる。ただし、最近はハードウェアで実現されるようになっているのでそれほどでもない。
具体的な方法
- 仮数と指数で表現する。これは10進数でも用いられている。(例: 2.9979 x 108)
表現できる値の範囲
- 2進法で32桁の場合
- 正負の符号に1桁
- 指数部に8桁 →
- 仮数部に23桁 → 10進数で約8桁弱
- 2進法で64桁の場合
- 正負の符号に1桁
- 指数部に11桁 →
- 仮数部に52桁 → 10進数で約15桁
Excelの数値がどの程度の精度か調べてみよ。
- Excelを起動する。
- A1(一番左上のセル)に1と入力する。
- A2(A1の下のセル)に「=A1/10」と入力する。
- A2の右下の角をA20ぐらいまでドラッグする。
- B1に「=1+A1」と入力する。
- B1の右下の角をB20ぐらいまでドラッグする。
- B1からB20が選択された状態で、「書式」→「セル」→「表示形式」→「数値」→小数点以下の桁数を30に→「OK」
- 1に足された数がどこで消えるか見てみよ。
この実験から、Excelでは数値がどのように表現されていると推測されるか?
Windowsのファイルの管理方法の一つであるFAT32では1ハードディスクで2テラバイトまでしか管理できない。
ハードディスクのデータは何バイトかをセクタと呼ばれるひとまとまりにして管理しているが、FAT32はセクタの番号を32ビットで表しているからである。
この場合セクタは何バイトか?
2009年11月10日の財務省の発表によると日本の債務残高は864兆5226億円である。
これを2進法で表現するには何ビット必要か?
2の補数表現の場合は何ビットか?
電卓で確認してみよ。
アンケート
yamaguch@mail.ecc.u-tokyo.ac.jp Copyright 2011 Kazunori Yamaguchi 山口和紀@東京大学総合文化研究科