Top > 十六進数


十六進数

Last-modified: 2019-03-16 (土) 23:30:28

十六進数とは、十六進法によって表される数のこと。

 

十六進法(じゅうろくしんほう、 英: hexadecimal)とは、16を底(てい)とし、底およびその冪を基準にして数を表す方法である。
Wikipediaより引用

 
 




もうちょっとわかりやすく説明できないの?(呆れ) Edit

10進数で16になったときに桁が1つ繰り上がるのが16進数。
Aが10でBが11とかいう、慣れてない人には意味不明なのが16進数。
10進ではキリが悪い255とか65535とかは16進ならキリが良い。それが16進数。
なんとなくAは奇数でBは偶数っぽいけど、16進ではその逆で、Aは偶数、Bは奇数ってのも意外と間違えやすい。←どうでもいいわ

基本的に変換はツール使うのが吉。

 

覚えておきたいことは、16進数では「0から9の数字」と「AからFまでのアルファベット」しか出てこないこと。
カラーコードでデタラメな色を作ろうとして「&color(#boudai){テスト};」とか入れても色にならないゾ。

ちなみにAからFのアルファベットは大文字でも小文字でも意味は変わらない。

読み方と0x(ゼロエックス) Edit

例えば「10」だと特に指定がない場合は10進数の「10(じゅう)」と読み、
カウントアップを読み上げると「ぜろ、いち、に、さん、し、ご、ろく、しち、はち、きゅう、じゅう」の「じゅう」となるが、

それが16進数だったとすると「10(いちぜろ)」、
カウントアップを読み上げると「ぜろ、いち、に、さん、よん、ご、ろく、なな、はち、きゅう、えー、びー、しー、でぃー、いー、えふ、いちぜろ」の「いちぜろ」となり、全くの別物になってしまう。

 

10(じゅう)10(いちぜろ)、どっち?

 

それを区別するために使われるのが「0x(ぜろえっくす)」である。
これを16進の前につけておけば「これは16進ですよ」一目でわかるようにできる。

 

10(じゅう)は10進数の10(じゅう)だし、0x10(ぜろえっくすいちぜろ)は16進数の10(いちぜろ)だ!

 

ちなみに読み方はそのまま前から読み上げていくだけである。
10進数の「1989」なら「せん きゅうひゃく はちじゅう きゅう」という読み方が正しいが、16進数の場合は「いち きゅう はち きゅう」と読むのが正しい。
「0x1989」は「ぜろ えっくす いち きゅう はち きゅう」と読む。

「0x」の「x」は小文字であることが多いようだ。

10進数と16進数の対応(0から255まで) Edit

10進数16進数読み補足
00ぜろカラーコードの場合は「00」読みは「ぜろ ぜろ」
11いちカラーコードの場合は「01」読みは「ぜろ いち」
22カラーコードの場合は「02」読みは「ぜろ に」
33さんカラーコードの場合は「03」読みは「ぜろ さん」
44よんカラーコードの場合は「04」読みは「ぜろ よん」
55カラーコードの場合は「05」読みは「ぜろ ご」
66ろくカラーコードの場合は「06」読みは「ぜろ ろく」
77ななカラーコードの場合は「07」読みは「ぜろ なな」
88はちカラーコードの場合は「08」読みは「ぜろ はち」
99きゅうカラーコードの場合は「09」読みは「ぜろ きゅう」
10aえーカラーコードの場合は「0a」読みは「ぜろ えー」
11bびーカラーコードの場合は「0b」読みは「ぜろ びー」
12cしーカラーコードの場合は「0c」読みは「ぜろ しー」
13dでぃーカラーコードの場合は「0d」読みは「ぜろ でぃー」
14eいーカラーコードの場合は「0e」読みは「ぜろ いー」
15fえふカラーコードの場合は「0f」読みは「ぜろ えふ」
1610いち ぜろ
1711いち いち
1812いち に
1913いち さん
2014いち よん
2115いち ご
2216いち ろく
2317いち なな
2418いち はち
2519いち きゅう
261aいち えー
271bいち びー
281cいち しー
291dいち でぃー
301eいち いー
311fいち えふ
3220以下略
3321
3422
3523
3624
3725
3826
3927
4028
4129
422a
432b
442c
452d
462e
472f
4830
4931
5032
5133
5234
5335
5436
5537
5638
5739
583a
593b
603c
613d
623e
633f
6440
6541
6642
6743
6844
6945
7046
7147
7248
7349
744a
754b
764c
774d
784e
794f
8050
8151
8252
8353
8454
8555
8656
8757
8858
8959
905a
915b
925c
935d
945e
955f
9660
9761
9862
9963
10064
10165
10266
10367
10468
10569
1066a
1076b
1086c
1096d
1106e
1116f
11270
11371
11472
11573
11674
11775
11876
11977
12078
12179
1227a
1237b
1247c
1257d
1267e
1277f
12880
12981
13082
13183
13284
13385
13486
13587
13688
13789
1388a
1398b
1408c
1418d
1428e
1438f
14490
14591
14692
14793
14894
14995
15096
15197
15298
15399
1549a
1559b
1569c
1579d
1589e
1599f
160a0
161a1
162a2
163a3
164a4
165a5
166a6
167a7
168a8
169a9
170aa
171ab
172ac
173ad
174ae
175af
176b0
177b1
178b2
179b3
180b4
181b5
182b6
183b7
184b8
185b9
186ba
187bb
188bc
189bd
190be
191bf
192c0
193c1
194c2
195c3
196c4
197c5
198c6
199c7
200c8
201c9
202ca
203cb
204cc
205cd
206ce
207cf
208d0
209d1
210d2
211d3
212d4
213d5
214d6
215d7
216d8
217d9
218da
219db
220dc
221dd
222de
223df
224e0
225e1
226e2
227e3
228e4
229e5
230e6
231e7
232e8
233e9
234ea
235eb
236ec
237ed
238ee
239ef
240f0
241f1
242f2
243f3
244f4
245f5
246f6
247f7
248f8
249f9
250fa
251fb
252fc
253fd
254feえふ いーファイアーエムブレムのことではない
255ffえふ えふファイナルファンタジーのことではない

余談だがFF5の255番目のアイテム(通常プレイでは見ることができない)の名前が「えふえふ」だとか。

手計算で16進を10進に変換してみる Edit

Q. 0x57FDを10進数に変換せよ

計算方法は以下の通り。

  1. まず「0x」は飾りなので無視する
  2. 次に各桁の1文字を1つの数値として10進数に変換する
    ・16進の「5」は10進の「5」
    ・16進の「7」は10進の「7」
    ・16進の「F」は10進の「15」
    ・16進の「D」は10進の「13」
  3. 下1桁目にあった文字は、それを10進に変換したものをそのまま残しておく
    ・13
  4. 下2桁目にあった文字は、それを10進に変換したものに10進数の「16」を掛ける
    ・15×16=240
  5. 下3桁目にあった文字は、10進に変換したものに10進数の「256」を掛ける
    ・7×256=1792
  6. 下4桁目にあった文字は、10進に変換したものに10進数の「4096」を掛ける
    ・5×4096=20480
  7. 最後に、それらをすべて足したものが10進数に変換したものになる
    ・13+240+1792+20480=22525
 

色付きの表にしてみるとこんな感じ。

0x57FD
Dは10進で1313=13
Fは10進で1515×16=240
7は10進で77×256=1792
5は10進で55×4096=20480
足し合わせて13+240+1792+20480=22525

各桁に掛ける数字は 16, 256, 4096, 65536, 1048576, … と続いていくが、これには法則があり、16の○乗(○は1つずつ大きくなる)になっている。
べき乗はググったところ中学数学で習ってるらしい。
ちなみに「16の○乗」の数字が「16」である理由は「16進数」だから。そのまんま。

ちなみに16進の下1桁は、その法則に従って「16の0乗」を掛けている。
ググったところゼロのべき乗は高校数学で習ってるらしい。
「なんちゃらの0乗」はなんちゃらがどんな数字であっても「1」になる。なぜかは知らない。
上の手順では、「ある数に1を掛けても数字は変わらない」から「そのまま残しておく」としておいた。

16の0乗1
16の1乗16
16の2乗16×16=256
16の3乗16×16×16=4096
16の4乗16×16×16×16=65536
16の5乗16×16×16×16×16=1048576
以下略

以上のことから、さっきの色付きの表を書き直すとこうなる。

0x57FD
Dは10進で1316^0.png×13=1×13=13
Fは10進で1516^1.png×15=16×15=240
7は10進で716^2.png×7=256×7=1792
5は10進で516^3.png×5=4096×5=20480
 13+240+1792+20480=22525

手計算で10進を16進に変換してみる Edit

Q. 10進数の49543を16進数に変換せよ

計算方法は以下の通り。

  1. まず49543を16で割ったときの商と余りを求める。その余りが16進の下1桁目となる10進数の数字である(余りが0のときはその桁は0になる)
    ・49543÷16=3096…7
  2. 上で求まった商を16で割ったときの商と余りを求める。その余りが16進の下2桁目となる10進数の数字である(余りが0のときはその桁は0になる)
    ・3096÷16=193…8
  3. 上で求まった商を16で割ったときの商と余りを求める。その余りが16進の下3桁目となる10進数の数字である(余りが0のときはその桁は0になる)
    ・193÷16=12…1
  4. 上で求まった商を16で割ったときの商と余りを求める。その余りが16進の下4桁目となる10進数の数字である(余りが0のときはその桁は0になる)
    ・12÷16=0…12
  5. それぞれの桁を10進数から16進数に変換し、順番に並べると16進の値になる
    ・10進数の「7」は16進数の「7」
    ・10進数の「8」は16進数の「8」
    ・10進数の「1」は16進数の「1」
    ・10進数の「12」は16進数の「C」
    ・右から「7」「8」「1」「C」と並べて、「C187」
    ・「0x」をつけたら「0xC187」
 

色付きの表にしてみるとこんな感じ。

10進数16進数
49543÷16=3096 余り 777→答えは「C187」
3096÷16=193 余り 888
193÷16=12 余り 111
12÷16=0 余り 1212C







では、なぜこの計算で16進数に変換できたかを説明する。

 

1.の式「49543÷16=3096…7」を文章化すると「49543を16ずつに分けると、3096つに分けられ、7つが余った」という意味になる。
ここでは「[]というモノが49543個」あり、それが「[16]×3096個」と「[]×7個」に分けることができたと考えてほしい。
そして、そもそも「16進数」とは「16になったときに繰り上がる」という性質がある。
また、「16で割ったときの余り」には「0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 いずれかになる」という性質がある。
以上2つの性質から、16で割ったときの余りが16進の桁の一つとして求まることになる。
先程求まった3096は繰り上がりになるのだが、このままではそれは16進数で表現できていない状態であるため、再度16で割ったときの余りを求め次の桁の値を確定させていく。

 

次に2.の式「3096÷16=193…8」を文章化すると「3096を16ずつに分けると、196つに分けられ、8つが余った」となる。
ここでは「[16]というモノが3096個」あり、それが「[256]×193個」と「[16]×8個」に分けることができたと考える。
[256]が出てきた理由は簡単で、「1箱16つ入りのお菓子を16箱で1セットにしました。このとき1セットには16×16で256つのお菓子が入ってます」というのと同じ。

 

3.の式「193÷16=12…1」は「[256]というモノが193個」あり、それは「[4096]×12個」と「[256]×1個」だったということ。

 

4.の式「12÷16=0…12」は「[4096]×12個」だったという再確認をしただけ。

 

こうして10進数「49543」を16進数「C187」に変換できたわけだが、ここからまた10進数に変換してみたら上に書いてあることが納得できるかもしれない。
言うまでもないが10進の「49543」を16進にしたものが「C187」なのだから、16進の「C187」を10進にすると当然「49543」になる。

0xC187
1×7=7[]が7つあるよ!
16×8=128[16]が8つあるよ!
256×1=256[256]が1つあるよ!
4096×12=49152[4096]が12つあるよ!
 7+128+256+49152=49543全部あわせると49543になるよ!

ポケモンの個体値は32進数 Edit

このWikiではポケモンの話題が多いのでついでに書いておく。

個体値が31であることを示す「V」個体値が30であることを示す「U」とかは10進数を32進数に変換しただけである。

10進数32進数ジャッジ
00ダメかも
11まあまあ
22
33
44
55
66
77
88
99
10A
11B
12C
13D
14E
15F
16Gかなりいい
17H
18I
19J
20K
21L
22M
23N
24O
25P
26Qすごくいい
27R
28S
29T
30Uすばらしい
31Vさいこう

そもそもポケモンの個体値は、個体値調整(ガルド抜かれ調整とか)をしない限り0と1と30と31しか使う必要がないからVとU以外のアルファベット表記は見たことないかも。
「いやいや、昔はめざパ威力70のためにA個体値2と3も活躍してただろ」だって? そんなものありましたねぇ……。

関連ページ Edit

コメント Edit

  • 【悲報】文系ワイ、全くわからない -- うにまろ 2018-12-19 (水) 22:17:53
  • ???「次は555を16進数に変換だ」 -- YUYA 2018-12-20 (木) 05:46:05
  • はえ~すっごい分かりやすい・・・ -- ソーナンスの人 2018-12-20 (木) 10:50:03
  • この記事を書いた人すごすぎる -- 眼鏡急行 2018-12-20 (木) 14:27:34
  • 【朗報】理系ワイ、よくわかった -- 穏やかじゃない 2018-12-20 (木) 14:44:09

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

観覧者数 Edit

現在?
今日?
昨日?
合計?