Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
すべてはバイナリ
Search
Satoru Takeuchi
PRO
June 06, 2020
Technology
0
190
すべてはバイナリ
以下動画のテキストです。
https://youtu.be/8qg2b8ZZm_c
Satoru Takeuchi
PRO
June 06, 2020
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
「Linux」という言葉が指すもの
sat
PRO
3
100
APIとABIの違い
sat
PRO
5
62
ファイルシステムへのアクセス方法
sat
PRO
0
26
ファイルシステム
sat
PRO
1
34
低レイヤソフトウェア技術者が YouTuberとして食っていこうとした話
sat
PRO
7
6.1k
ポーリングと割り込み
sat
PRO
1
80
Rook: Intro and Deep Dive With Ceph
sat
PRO
1
140
会社員しながら本を書いてきた知見の共有
sat
PRO
3
880
デバイスにアクセスするデバイスファイル
sat
PRO
1
62
Other Decks in Technology
See All in Technology
バイブスに「型」を!Kent Beckに学ぶ、AI時代のテスト駆動開発
amixedcolor
2
530
5分でカオスエンジニアリングを分かった気になろう
pandayumi
0
220
実践!カスタムインストラクション&スラッシュコマンド
puku0x
0
350
EncryptedSharedPreferences が deprecated になっちゃった!どうしよう! / Oh no! EncryptedSharedPreferences has been deprecated! What should I do?
yanzm
0
230
AIエージェント開発用SDKとローカルLLMをLINE Botと組み合わせてみた / LINEを使ったLT大会 #14
you
PRO
0
100
テストを軸にした生き残り術
kworkdev
PRO
0
200
人工衛星のファームウェアをRustで書く理由
koba789
14
7.4k
BPaaSにおける人と協働する前提のAIエージェント-AWS登壇資料
kentarofujii
0
130
品質視点から考える組織デザイン/Organizational Design from Quality
mii3king
0
200
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3k
スマートファクトリーの第一歩 〜AWSマネージドサービスで 実現する予知保全と生成AI活用まで
ganota
1
210
AWSで始める実践Dagster入門
kitagawaz
1
600
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.5k
A better future with KSS
kneath
239
17k
Done Done
chrislema
185
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Optimizing for Happiness
mojombo
379
70k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Speed Design
sergeychernyshev
32
1.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Transcript
すべてはバイナリ Jun 6th, 2020 Satoru Takeuchi Twitter: satoru_takeuchi 1
目次 1. コンピュータにおける情報の表現方法 2. 整数の表現方法 3. 文字の表現方法 4. まとめ 2
目次 1. コンピュータにおける情報の表現方法 2. 整数の表現方法 3. 文字の表現方法 4. まとめ 3
コンピュータシステムのデータといえば… • 人間から見て半端な、不自然な数が多い ◦ データの単位であるバイトは 8bit → 10bitじゃだめなの? ◦ メモリ量16GB、32GBとか
→ なぜ30GBとか40GBじゃだめなの? ◦ 32 bit CPUとか64bit CPUとか → なぜ50bitとか100bitじゃだめなの? • これらの数値は全部2^n • 理由: データは2^n単位で扱うのが自然 4
データの実体 • データは何らかの物理的な素子のon/offのかたまりであらわされる ◦ メモリ(DRAM), SSD: 素子内の電荷 ◦ HDD: 磁性体の磁化の向き
◦ DVD: ディスク表面の溝の深さが閾値以上かどうか • たくさんのデータを表現したければ素子を大量に並べる • 1つが1ビット、ビットが8つ集まると1バイト 5 素子1つ: 表現できる状態は2つ 素子2つ: 表現できる状態は4つ off off off on off on on off on on
データの数値表記 • データは二進表記するのが便利 ◦ ビットが立っているかどうかが一目でわかる 6 素子の状態: 素子の数は3つ → 3bit
10進表記 2進表記 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 off off off off off on off on off off on on on off off on off on on on off on on on
16進表記 • 2進表記は桁数が大きくなるのでデータは16進数で表現することが多い • 便宜上一桁を0~9,a~fで表現する。fに1を足すと桁上がり 7 データの2進表記 16進表記 00000 0
00001 1 .... ... 01111 f 10000 10
すべてはバイナリ • すべてのデータはビットないしバイトの列 ◦ 2進表記されることが多いので一般にバイナリ /バイナリデータと呼ぶ • データの例 ◦ 整数
◦ 文字列 ◦ 画像 ◦ 音声 ◦ 動画 • それぞれ規格が決まっている ◦ ときには自分で決めなければいけないこともある ▪ 例: 独自アプリ内のデータ通信方法 8
目次 1. コンピュータにおける情報の表現方法 2. 整数の表現方法 3. 文字の表現方法 4. まとめ 9
表現方法 • 0以上の整数(符号なし整数)について扱う ◦ 負の数を考えると2の補数が云々とか難しい話が出てくるので省略 • データの2進数表記がそのまま数値に対応するのでスゲエ楽! 10 0以上の整数の値 データの2進表記
10進表記 16進表記 0 00000 0 0 1 00001 1 1 2 00010 2 2 ... ... .... ... 15 01111 15 f 16 10000 16 10
演習 • 使うもの ◦ xxdプログラム(xxdパッケージに入っている ): ファイルの中身を2進表記や16進表記で見る ◦ (自作)numプログラム: 1バイトで表現される符号なし整数値を標準出力に書き込む
• やること ◦ 以下の表に記載されている整数値の 2進、16進データ表現を見る 11 0以上の整数の値 データの2進表記 16進表記 0 00000 0 1 00001 1 2 00010 2 ... ... ... 15 01111 f 16 10000 10
目次 1. コンピュータにおける情報の表現方法 2. 整数の表現方法 3. 文字の表現方法 4. まとめ 12
表現方法 • ASCII Codeという規格について扱う ◦ https://www.ieee.li/computer/ascii.htm ◦ 1バイトで一文字を扱う ◦ 数値、アルファベット
(小文字、大文字)、一部記号を表現可能 • 日本語とか考え出すと終わらないので省略 ◦ キーワード: Unicode, UTF-8, 文字コード, 地獄 13
演習 • 使うもの ◦ xxd • やること ◦ 適当に文字やら文字列をファイルに書いて xxdで覗いてみる
14
目次 1. コンピュータにおける情報の表現方法 2. 整数の表現方法 3. 文字の表現方法 4. まとめ 15
まとめ • データは物理的素子の状態(on/off)によって表現する ◦ 2つの状態をあらわすものがビット、それが 8つ集まるとバイト ◦ 2進表記、16進表記が楽 • すべてのデータはビット列で表現されるバイナリ
• 多くのデータは表現方法が規格化されている 16