16進数

本ページには広告が含まれています。

16進数から10進数に変換します。$表記は小数には対応していないため、10進数表記の小数の値を変換するにはhexToDec関数 (自作関数)を使います。

構文
$(16進数)
引数
戻り値
10進数に変換した値

16進数とは

16進数とは09の10個の数字と、AFの6個のアルファベット(小文字も可)を使って数値を表現する方法です。

16進数では一つの桁において、0123456789ABCDEFの16個の数値を扱うことができます。

09は10進数と同じで、Aは10進数の10Fは10進数のFに相当します。Fの次は位があがり10となり、これは10進数の16になります。

10進数 012345678910111213141516
16進数 0123456789ABCDEF10

進数表記の区別をするため16進数では先頭に0xをつけます。16進数の100x10と表記します。

使い方

16進数の0x50xA0x1F0xFFをそれぞれ10進数に変換します。

UWSC
PRINT $5
PRINT $A
PRINT $1F
PRINT $FF
結果
プレーンテキスト
5
10
31
255

表現できる範囲

$を使って表現できるのは、符号付き64bitの整数である-9,223,372,036,854,775,808+9,223,372,036,854,775,807の範囲の数値です。

UWSC
PRINT "最大値:" + $7FFFFFFFFFFFFFFF
PRINT "最小値:" + $8000000000000000
結果
プレーンテキスト
最大値:9.22337203685478E18
最小値:-9.22337203685478E18

先頭の1bitは符号を表すために使われるので63bitが数値を表し、\(-2^{63}\)〜\(2^{63}-1\)の範囲となります。

符号ビット

最上位ビット が符号を表す符号ビットです。64bitなので16進数だと右から16桁目になります。2進数にしたとき0(16進数で07)であれば正数、1(16進数で8F)であれば負数となります。

0x80は64bitで表記すると0x0000000000000080となり最上位ビットが0なので正数となります。

UWSC
PRINT $80
PRINT $0000000000000080
結果
プレーンテキスト
128
128

最上位ビットを省略すると0埋めされて正数になるので、負数を表現するには以下のように16桁で表現します。

UWSC
PRINT $FFFFFFFFFFFFFFFF
PRINT $FFFFFFFFFFFFFFFE
PRINT $FFFFFFFFFFFFFFFD
結果
プレーンテキスト
-1
-2
-3

計算

16進数同士

結果は10進数で返されます。

UWSC
PRINT $F + $E                    // 15 + 14
PRINT $10 + $FFFFFFFFFFFFFFFA    // 16 + (-6)
結果
プレーンテキスト
29
10
16進数と10進数

16進数と10進数の値が混在していても、計算することができます。こちらも結果は10進数で返ります。

UWSC
PRINT $F3 + 150     // 243 + 150
結果
プレーンテキスト
393

16進数に変換するにはFORMAT関数 (スクリプト関数)を使います。第1引数に16進数に変換する値、第3引数に-1を指定します。

UWSC
DIM dec = $F3 + 150
PRINT FORMAT(dec,, -1)
結果
プレーンテキスト
189

decToHex関数 (自作関数)でも16進数に変換できます。最上位ビットで符号の判断をしているので先頭に0が入ることがあります。

UWSC
PRINT decToHex($F3+150)
結果
プレーンテキスト
0189

関連記事

hexToDec関数 (自作関数)
16進数を10進数に変換します。負数・小数の値にも対応しています。
decToHex関数 (自作関数)
10進数を16進数に変換します。負数・小数の値にも対応しています。
binToDec関数 (自作関数)
2進数を10進数に変換します。負数・小数の値にも対応しています。
binToHex関数 (自作関数)
2進数を16進数に変換します。負数・小数の値にも対応しています。
hexToBin関数 (自作関数)
16進数を2進数に変換します。負数・小数の値にも対応しています。
decToBin関数 (自作関数)
10進数を2進数に変換します。負数・小数の値にも対応しています。