情報数学 I

第十回 (12月5日)

2進数とビット毎演算

Martin J. Dürst

duerst@it.aoyama.ac.jp

http://www.sw.it.aoyama.ac.jp/2008/Math1/lecture10.html

AGU

© 2005-8 Martin J. Dürst 青山学院大学

今週の予定

先週のまとめ

2 進数と 16 進数の対応

10 2 8 16
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 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 10000 20 10

数の表現: 10進法

205 = 2×102 + 0×101 + 5×100

34.56 = 3×101 + 4×100 + 5×10-1 + 6×10-2

数の表現: 2進法

1010011 = 1×26 + 0×25 + 1×24 + 0×23 + 0×22 + 1×21 + 1×20 =

数の表現: 16進法

1AF = 1×162 +A×161 +F×160 =

16進数の桁の値
桁 (大文字) 桁 (小文字) 値 (10進数で)
A a 10
B b 11
C c 12
D d 13
E e 14
F f 15

2 の何乗

n 2n 16 進数
0 1 1
1 2 2
2 4 4
3 8 8
4 16 10
5 32 20
6 64 40
7 128 80
8 256 100
9 512 200
10 1024 ≈103 (kilo) 400
11 2048 800
12 4096 1000
16 65536 10000
20 1048576 ≈ 106 (mega) 100000
30 1073741824 ≈ 109 (giga) 40000000
40 1099511627776 ≈ 1012 (tera) 10000000000

基数変換

n 進数から 10 進数: それぞれの桁の値と桁の重みの積の和

10 進数から n 進数:

23 = 11×21 + 1×20 = 5×22 + 1×21 + 1×20 = 2×23 + 1×22 + 1×21 + 1×20 = 1×24 + 0×23 + 1×22 + 1×21 + 1×20 = 10111

余り 結果の回の桁
23 11 1 1
11 5 1 11
5 2 1 111
2 1 0 0111
1 0 1 10111

変換したい数を最初の商にして、繰り返し商を n で割って、余りを最下位の桁にする

n 進数から m 進数:

情報テクノロジーでよく使う基数

基数 英語と略 (形容詞) 用途、使用理由 定数の書き方
2 binary, bin 論理と回路の基本 0b101100 (Ruby 等一部限定)
8 octal, oct 2 進数の短縮、最近使用が少ない 024570 (C 等多くの言語)
10 decimal, dec 人間用 1234567 (全ての言語)
16 hexadecimal, hex 2 進数の短縮、1 バイト (8 ビット) を2 桁で表現可能 0xA3b5 (C 等多くの言語)

冗談の宿題

Q: Why do computer scientist always think Christmas and Halloween are the same ?

質問: なぜ情報テクノロジーの専門家はクリスマスとハロウィーンをいつも誤解するか。

もう一つの冗談

質問: 情報テクノロジーで還暦は何歳か。

よく使われるビット毎演算

データ型によって 8 ビット (1 バイト)、16 ビット、32 ビット、64 ビット

ビット毎演算の用途:

他のビット演算

ビット毎演算で足し算

一桁の足し算
0 1
0 0 1
1 1 10