SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
東北大学 工学部 機械知能・航空工学科
2018年度 クラスC3 D1 D2 D3
情報科学基礎 I
大学院情報科学研究科
鏡 慎吾
http://www.ic.is.tohoku.ac.jp/~swk/lecture/
2. 数の表現 ― 符号なし整数
(教科書1.1節)
2鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
r 進数
10 進数:
0, 1, 2, … 9 の 10 個のシンボルを使って数を表す
1234 (10)
= 1 x 103 + 2 x 102 + 3 x 101 + 4 x 100
同様に,
r 個のシンボルを使って表したものを r 進数と呼ぶ
1234 (r)
= 1 x r3 + 2 x r2 + 3 x r1 + 4 x r0
シンボルの数 r を基数 (radix) と呼ぶ
3鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
2進数,8進数,16進数
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
10001
10010
0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
10
11
12
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
20
21
22
10進数 2進数 8進数 16進数
4鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
10進数との変換
2進から10進: 定義どおりに計算する
10進から2進: 2のべき乗の和に分解する
2 ) 37
2 ) 18 … 1
2 ) 9 … 0
2 ) 4 … 1
2 ) 2 … 0
2 ) 1 … 0
0 … 1
1001(2)
= 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20
= 9(10)
→ 100101(2)
[方法1] 下位ビットから決めていく
37 = 32 + 5
= 32 + 4 + 1
= 100101(2)
[方法2] 上位ビットから決めていく
方法2は,2のべき乗数を暗記してい
ないとできない.しかし慣れるとこの
方が早い
5鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
8進数,16進数との変換
001000110101011
1001000110101011
8進数への変換: 3桁ごとに区切ってパターンを置き換える
16進数への変換: 4桁ごとに区切ってパターンを置き換える
1 0 6 5 3
9 1 a b
2進数への変換も,これらの逆の操作をするだけ
(C言語では 010653)
(C言語では 0x91ab)
6鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
ビットとバイト
• 2進数の1桁を bit (binary digit) と呼ぶ
• 計算機の中では,有限の桁数でデータを表現しなくては
ならない
• 基本単位: 1 byte = 8 bit (現代のコンピュータではほぼ常に)
• メモリは 1 バイトごとに区切られて,それぞれにアドレス
がついている
…
0 1 2 3 4 5 6 7アドレス
01111101
7鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
複数のバイトをまとめて扱う
…
0 1 2 3 4 5 6 7アドレス
…
0 1 2 3 4 5 6 7アドレス
メモリアドレス 4 に対する 2 バイト数値のアクセス
メモリアドレス 4 に対する 4 バイト数値のアクセス
8鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
複数ビットの呼び方
ほとんどの32
ビットプロセッ
サ
ほとんどの16
ビットプロセッ
サ(と互換性を
保つ32ビットプ
ロセッサ)
通信分野 C の型名(最近のほ
とんどの計算機の場
合)
8 bit byte byte octet char
16 bit half word word short int
32 bit word double word int
64 bit double word long long int
• 一度に処理できるサイズによって,16ビットプロセッサ,32ビットプロセッサ,
などと分類する
• プロセッサによって呼び方が違う
• C言語の型のサイズすら,計算機によって違う
9鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
表せる数値の範囲(符号なしの場合)
• n ビットで,2n 種類の数値を表すことができる
• nビット符号なし数: 0 ~ 2n – 1 を表す
• 8ビット符号なし数: 0 ~ 255
• 16ビット符号なし数: 0 ~ 65,535
• 32ビット符号なし数: 0 ~ 4,294,967,295
• 210 = 1024 なので,210 倍を kilo で表す場合がある.この分野では,1k
が 1024 なのか 1000 なのか注意が必要.
• 同様に,220 倍 = mega,230 倍 = giga
• 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 程度までは覚えておくと便利
• 「224 はだいたい幾つか?」 224 = 210×210×24 だから,100万の 16
倍くらい,とすぐに見当がつく
10鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
11鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
余談: 4ギガバイトの壁
32ビットプロセッサ(のほとんど)は,32ビット数を一度に操作する
ことができ,メモリアドレスも 32 ビット数で表す.
64ビットプロセッサ(のほとんど)は,64ビット数を一度に操作する
ことができ,メモリアドレスも 64 ビット数で表す.
メモリアドレスを 32 ビットで表現するプロセッサは,
4,294,967,296バイト ≒ 4.3 ギガバイト までのメモリしか扱うこと
ができない.
12鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
MSB と LSB
10010001 10111011
LSB: Least Significant Bit (最下位ビット)
MSB: Most Significant Bit (最上位ビット)
現在考えている桁数で最上位のビットと最下位のビットをそれぞ
れ MSB,LSBと呼ぶ.
例えば16ビットの場合,
13鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
算術演算
• 加算,減算,乗算,除算はいずれも 10 進数の場合と同じよう
に筆算できる
• 通常,このような筆算を自分で計算する必要はほぼない.し
かし,この原理を理解することは,演算回路の仕組みを理解
する上で重要.
• オーバフロー(あふれ)に注意する必要がある
•8 ビットで計算しているときに,255 に 1 を足すと 0 になっ
てしまう
14鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
加算・減算
1111
01111010(2) = 122(10)
+) 00111001(2) = 57(10)
10110011(2) = 179(10)
加算: 10進では,各桁の加算結果が9を超えると繰り上がる
2進では,1を超えると繰り上がる
減算: 10進では,繰り下がりで10を借りてくる.
2進では,2を借りてくる
0
01111010(2) = 122(10)
-) 00111001(2) = 57(10)
01000001(2) = 65(10)
15鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
乗算・除算
加算・減算が理解できれば,基本的には同じである
• 九九は不要; AND だけが分かればよい
0111(2) = 7(10)
x) 1101(2) = 13(10)
0111
0000
0111
0111
1011011(2) = 91(10)
1011(2) = 11 (10)
1011(2))01111010(2) = 122(10)/11(10)
1011
10001
1011
1100
1011
1 (2) = … 1 (10)
16鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
ビットシフト演算
unsigned short a, b, x, y; // 16 bit
a = 0x1234; // 0001 0010 0011 0100
x = a >> 2; // 0000 0100 1000 1101
b = 0xcafe; // 1100 1010 1111 1110
y = b << 3; // 0101 0111 1111 0000
シフトによって空いたビットには 0 を詰める
• 10進数: 左 k 桁シフトは 10k 倍,右 k 桁シフトは 10-k 倍
• 2進数: 左 k ビットシフトは 2k 倍,右 k ビットシフトは 2-k 倍
(ただしオーバフローが起きないことを前提とする; 端数は無視)
17鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
例題
ファミリーコンピュータ用ゲーム「ドラゴンクエストIV 導かれし者た
ち」((株)エニックス, 1990年) には,プレイヤがコインを購入し,ス
ロットマシンやポーカーなどのゲームにそのコインを賭けることの
できる「カジノ」と呼ばれるイベントが用意されていた.
コイン1枚は20ゴールド (ゴールドはゲーム世界における通貨単
位) で購入できたが,838861枚を指定して購入すると合計わず
か4ゴールドで買えてしまうという現象が生じた.このとき,内部で
どのような処理が行われていたか推測して述べよ.
(2009年度期末試験)
18鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
http://www.youtube.com/watch?v=ajvMdKAnkJ8
19鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
例題解答例
20 [ゴールド/枚] × 838861 [枚] = 16777220 [ゴールド]
きっと有限ビット長表現によるオーバフローが原因であろうと推
測してみる.
28 = 256
216 = 65536 (256 £ 256)
224 = 16777216 (256 £ 65536) ← !!
232 = 4294967296 (65536 £ 65536)
コインの対価を計算する際に 24 ビット長で計算が行われており,
オーバフローを考慮しない処理をしていたため,
16777220 – 16777216 = 4 [ゴールド] で買えたと考えられる.
20鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
練習問題
1. 2進数 00101100 を 10進数,16進数で表せ
2. 10進数 123 を 2 進数で表せ
3. プログラミング言語 Java のプログラムをコンパイルしたとき
に生成されるファイル(class ファイル) の最初の4 バイトをそ
れぞれ符号なしの 2 進数だとみなすと,10 進表示で順に
202 254 186 190
となることが知られている.それぞれを16 進数で表し,同じ
順に並べて書け.(2012年度期末試験)
21鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
練習問題 解答例
1. 00101100(2) = (32 + 8 + 4)(10) = 44(10)
= 2c(16)
2. 123(10) = (64 + 32 + 16 + 8 + 2 + 1)(10) = 01111011(2)
3. 202(10) = ca(16), 254 (10) = fe(16), 186 (10) = ba(16), 190(10) =
be(16) より,cafebabe

Contenu connexe

Tendances (17)

kagamicomput201704
kagamicomput201704kagamicomput201704
kagamicomput201704
 
kagamicomput201706
kagamicomput201706kagamicomput201706
kagamicomput201706
 
kagami_comput2016_07
kagami_comput2016_07kagami_comput2016_07
kagami_comput2016_07
 
kagamicomput201808
kagamicomput201808kagamicomput201808
kagamicomput201808
 
kagamicomput201803
kagamicomput201803kagamicomput201803
kagamicomput201803
 
kagami_comput2015_6
kagami_comput2015_6kagami_comput2015_6
kagami_comput2015_6
 
kagami_comput2016_04
kagami_comput2016_04kagami_comput2016_04
kagami_comput2016_04
 
kagamicomput201707
kagamicomput201707kagamicomput201707
kagamicomput201707
 
kagami_comput2016_06
kagami_comput2016_06kagami_comput2016_06
kagami_comput2016_06
 
kagamicomput201811
kagamicomput201811kagamicomput201811
kagamicomput201811
 
浮動小数点型と数値計算
浮動小数点型と数値計算浮動小数点型と数値計算
浮動小数点型と数値計算
 
kagamicomput201806
kagamicomput201806kagamicomput201806
kagamicomput201806
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
kagami_comput2016_14
kagami_comput2016_14kagami_comput2016_14
kagami_comput2016_14
 
kagami_comput2016_05
kagami_comput2016_05kagami_comput2016_05
kagami_comput2016_05
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
kagami_comput2015_8
kagami_comput2015_8kagami_comput2015_8
kagami_comput2015_8
 

Similaire à kagamicomput201802

Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義
JPCERT Coordination Center
 
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Yuya Unno
 
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Yuya Unno
 
kagami_comput2015_1
kagami_comput2015_1kagami_comput2015_1
kagami_comput2015_1
swkagami
 
文字列曖昧検索によるマルウェアバイナリ解析
文字列曖昧検索によるマルウェアバイナリ解析文字列曖昧検索によるマルウェアバイナリ解析
文字列曖昧検索によるマルウェアバイナリ解析
Preferred Networks
 
kagami_comput2015_7
kagami_comput2015_7kagami_comput2015_7
kagami_comput2015_7
swkagami
 

Similaire à kagamicomput201802 (13)

ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
kagamicomput201801
kagamicomput201801kagamicomput201801
kagamicomput201801
 
Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義
 
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
 
kagamicomput201807
kagamicomput201807kagamicomput201807
kagamicomput201807
 
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
 
kagami_comput2015_1
kagami_comput2015_1kagami_comput2015_1
kagami_comput2015_1
 
自作LSIコミュニティの可能性
自作LSIコミュニティの可能性自作LSIコミュニティの可能性
自作LSIコミュニティの可能性
 
文字列曖昧検索によるマルウェアバイナリ解析
文字列曖昧検索によるマルウェアバイナリ解析文字列曖昧検索によるマルウェアバイナリ解析
文字列曖昧検索によるマルウェアバイナリ解析
 
[Basic 1] ブロックチェーンと計算機科学 / ブール代数 / 情報理論
[Basic 1] ブロックチェーンと計算機科学 / ブール代数 / 情報理論[Basic 1] ブロックチェーンと計算機科学 / ブール代数 / 情報理論
[Basic 1] ブロックチェーンと計算機科学 / ブール代数 / 情報理論
 
Auto encoder
Auto encoderAuto encoder
Auto encoder
 
kagami_comput2015_7
kagami_comput2015_7kagami_comput2015_7
kagami_comput2015_7
 
計算機理論入門03
計算機理論入門03計算機理論入門03
計算機理論入門03
 

Plus de swkagami (16)

kagamicomput201814
kagamicomput201814kagamicomput201814
kagamicomput201814
 
kagamicomput201813
kagamicomput201813kagamicomput201813
kagamicomput201813
 
kagamicomput201812
kagamicomput201812kagamicomput201812
kagamicomput201812
 
kagamicomput201810
kagamicomput201810kagamicomput201810
kagamicomput201810
 
kagamicomput201809
kagamicomput201809kagamicomput201809
kagamicomput201809
 
kagamicomput201805
kagamicomput201805kagamicomput201805
kagamicomput201805
 
kagamicomput201804
kagamicomput201804kagamicomput201804
kagamicomput201804
 
kagamicomput201714
kagamicomput201714kagamicomput201714
kagamicomput201714
 
kagamicomput201713
kagamicomput201713kagamicomput201713
kagamicomput201713
 
kagamicomput201712
kagamicomput201712kagamicomput201712
kagamicomput201712
 
kagamicomput201711
kagamicomput201711kagamicomput201711
kagamicomput201711
 
kagamicomput201709
kagamicomput201709kagamicomput201709
kagamicomput201709
 
kagamicomput201708
kagamicomput201708kagamicomput201708
kagamicomput201708
 
kagamicomput201705
kagamicomput201705kagamicomput201705
kagamicomput201705
 
kagami_comput2016_13
kagami_comput2016_13kagami_comput2016_13
kagami_comput2016_13
 
kagami_comput2016_12
kagami_comput2016_12kagami_comput2016_12
kagami_comput2016_12
 

Dernier

Dernier (11)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

kagamicomput201802

  • 1. 東北大学 工学部 機械知能・航空工学科 2018年度 クラスC3 D1 D2 D3 情報科学基礎 I 大学院情報科学研究科 鏡 慎吾 http://www.ic.is.tohoku.ac.jp/~swk/lecture/ 2. 数の表現 ― 符号なし整数 (教科書1.1節)
  • 2. 2鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) r 進数 10 進数: 0, 1, 2, … 9 の 10 個のシンボルを使って数を表す 1234 (10) = 1 x 103 + 2 x 102 + 3 x 101 + 4 x 100 同様に, r 個のシンボルを使って表したものを r 進数と呼ぶ 1234 (r) = 1 x r3 + 2 x r2 + 3 x r1 + 4 x r0 シンボルの数 r を基数 (radix) と呼ぶ
  • 3. 3鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 2進数,8進数,16進数 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 10010 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 10進数 2進数 8進数 16進数
  • 4. 4鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 10進数との変換 2進から10進: 定義どおりに計算する 10進から2進: 2のべき乗の和に分解する 2 ) 37 2 ) 18 … 1 2 ) 9 … 0 2 ) 4 … 1 2 ) 2 … 0 2 ) 1 … 0 0 … 1 1001(2) = 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20 = 9(10) → 100101(2) [方法1] 下位ビットから決めていく 37 = 32 + 5 = 32 + 4 + 1 = 100101(2) [方法2] 上位ビットから決めていく 方法2は,2のべき乗数を暗記してい ないとできない.しかし慣れるとこの 方が早い
  • 5. 5鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 8進数,16進数との変換 001000110101011 1001000110101011 8進数への変換: 3桁ごとに区切ってパターンを置き換える 16進数への変換: 4桁ごとに区切ってパターンを置き換える 1 0 6 5 3 9 1 a b 2進数への変換も,これらの逆の操作をするだけ (C言語では 010653) (C言語では 0x91ab)
  • 6. 6鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) ビットとバイト • 2進数の1桁を bit (binary digit) と呼ぶ • 計算機の中では,有限の桁数でデータを表現しなくては ならない • 基本単位: 1 byte = 8 bit (現代のコンピュータではほぼ常に) • メモリは 1 バイトごとに区切られて,それぞれにアドレス がついている … 0 1 2 3 4 5 6 7アドレス 01111101
  • 7. 7鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 複数のバイトをまとめて扱う … 0 1 2 3 4 5 6 7アドレス … 0 1 2 3 4 5 6 7アドレス メモリアドレス 4 に対する 2 バイト数値のアクセス メモリアドレス 4 に対する 4 バイト数値のアクセス
  • 8. 8鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 複数ビットの呼び方 ほとんどの32 ビットプロセッ サ ほとんどの16 ビットプロセッ サ(と互換性を 保つ32ビットプ ロセッサ) 通信分野 C の型名(最近のほ とんどの計算機の場 合) 8 bit byte byte octet char 16 bit half word word short int 32 bit word double word int 64 bit double word long long int • 一度に処理できるサイズによって,16ビットプロセッサ,32ビットプロセッサ, などと分類する • プロセッサによって呼び方が違う • C言語の型のサイズすら,計算機によって違う
  • 9. 9鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 表せる数値の範囲(符号なしの場合) • n ビットで,2n 種類の数値を表すことができる • nビット符号なし数: 0 ~ 2n – 1 を表す • 8ビット符号なし数: 0 ~ 255 • 16ビット符号なし数: 0 ~ 65,535 • 32ビット符号なし数: 0 ~ 4,294,967,295 • 210 = 1024 なので,210 倍を kilo で表す場合がある.この分野では,1k が 1024 なのか 1000 なのか注意が必要. • 同様に,220 倍 = mega,230 倍 = giga • 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 程度までは覚えておくと便利 • 「224 はだいたい幾つか?」 224 = 210×210×24 だから,100万の 16 倍くらい,とすぐに見当がつく
  • 10. 10鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1)
  • 11. 11鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 余談: 4ギガバイトの壁 32ビットプロセッサ(のほとんど)は,32ビット数を一度に操作する ことができ,メモリアドレスも 32 ビット数で表す. 64ビットプロセッサ(のほとんど)は,64ビット数を一度に操作する ことができ,メモリアドレスも 64 ビット数で表す. メモリアドレスを 32 ビットで表現するプロセッサは, 4,294,967,296バイト ≒ 4.3 ギガバイト までのメモリしか扱うこと ができない.
  • 12. 12鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) MSB と LSB 10010001 10111011 LSB: Least Significant Bit (最下位ビット) MSB: Most Significant Bit (最上位ビット) 現在考えている桁数で最上位のビットと最下位のビットをそれぞ れ MSB,LSBと呼ぶ. 例えば16ビットの場合,
  • 13. 13鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 算術演算 • 加算,減算,乗算,除算はいずれも 10 進数の場合と同じよう に筆算できる • 通常,このような筆算を自分で計算する必要はほぼない.し かし,この原理を理解することは,演算回路の仕組みを理解 する上で重要. • オーバフロー(あふれ)に注意する必要がある •8 ビットで計算しているときに,255 に 1 を足すと 0 になっ てしまう
  • 14. 14鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 加算・減算 1111 01111010(2) = 122(10) +) 00111001(2) = 57(10) 10110011(2) = 179(10) 加算: 10進では,各桁の加算結果が9を超えると繰り上がる 2進では,1を超えると繰り上がる 減算: 10進では,繰り下がりで10を借りてくる. 2進では,2を借りてくる 0 01111010(2) = 122(10) -) 00111001(2) = 57(10) 01000001(2) = 65(10)
  • 15. 15鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 乗算・除算 加算・減算が理解できれば,基本的には同じである • 九九は不要; AND だけが分かればよい 0111(2) = 7(10) x) 1101(2) = 13(10) 0111 0000 0111 0111 1011011(2) = 91(10) 1011(2) = 11 (10) 1011(2))01111010(2) = 122(10)/11(10) 1011 10001 1011 1100 1011 1 (2) = … 1 (10)
  • 16. 16鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) ビットシフト演算 unsigned short a, b, x, y; // 16 bit a = 0x1234; // 0001 0010 0011 0100 x = a >> 2; // 0000 0100 1000 1101 b = 0xcafe; // 1100 1010 1111 1110 y = b << 3; // 0101 0111 1111 0000 シフトによって空いたビットには 0 を詰める • 10進数: 左 k 桁シフトは 10k 倍,右 k 桁シフトは 10-k 倍 • 2進数: 左 k ビットシフトは 2k 倍,右 k ビットシフトは 2-k 倍 (ただしオーバフローが起きないことを前提とする; 端数は無視)
  • 17. 17鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 例題 ファミリーコンピュータ用ゲーム「ドラゴンクエストIV 導かれし者た ち」((株)エニックス, 1990年) には,プレイヤがコインを購入し,ス ロットマシンやポーカーなどのゲームにそのコインを賭けることの できる「カジノ」と呼ばれるイベントが用意されていた. コイン1枚は20ゴールド (ゴールドはゲーム世界における通貨単 位) で購入できたが,838861枚を指定して購入すると合計わず か4ゴールドで買えてしまうという現象が生じた.このとき,内部で どのような処理が行われていたか推測して述べよ. (2009年度期末試験)
  • 18. 18鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) http://www.youtube.com/watch?v=ajvMdKAnkJ8
  • 19. 19鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 例題解答例 20 [ゴールド/枚] × 838861 [枚] = 16777220 [ゴールド] きっと有限ビット長表現によるオーバフローが原因であろうと推 測してみる. 28 = 256 216 = 65536 (256 £ 256) 224 = 16777216 (256 £ 65536) ← !! 232 = 4294967296 (65536 £ 65536) コインの対価を計算する際に 24 ビット長で計算が行われており, オーバフローを考慮しない処理をしていたため, 16777220 – 16777216 = 4 [ゴールド] で買えたと考えられる.
  • 20. 20鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 練習問題 1. 2進数 00101100 を 10進数,16進数で表せ 2. 10進数 123 を 2 進数で表せ 3. プログラミング言語 Java のプログラムをコンパイルしたとき に生成されるファイル(class ファイル) の最初の4 バイトをそ れぞれ符号なしの 2 進数だとみなすと,10 進表示で順に 202 254 186 190 となることが知られている.それぞれを16 進数で表し,同じ 順に並べて書け.(2012年度期末試験)
  • 21. 21鏡 慎吾 (東北大学): 情報科学基礎I 2018 (1) 練習問題 解答例 1. 00101100(2) = (32 + 8 + 4)(10) = 44(10) = 2c(16) 2. 123(10) = (64 + 32 + 16 + 8 + 2 + 1)(10) = 01111011(2) 3. 202(10) = ca(16), 254 (10) = fe(16), 186 (10) = ba(16), 190(10) = be(16) より,cafebabe