PINファイルとは、Matroxのビデオカード特有のもので、ビデオカードのEEPROM(Flash-ROM?)に書き込まれたビデオBIOSの領域の一部をテキストファイルとして出力したものです。
このPINファイルにはビデオカードが動作のための多くの指定(ビデオカード種類・コアクロック・メモリクロック・メモリアクセスタイミング・RAMDACクロック等)が記述されています。
逆を言えば、このPINファイルを書き換えて、その内容をVIDEOカードに書きこめば、グラフィックカードのチューンナップが可能なのです。PINファイルの取得は progbios -d > mypins.txt と実行することで行うことが出来ます。
この作業により、mypins.txtというファイルにG400のPIN内容が記録されます。逆に、PINファイルの内容ををG400に書きこむには progbios -s mypins.txt と実行します。
この作業の後マシンをリブートすることにより、変更が反映されます。
この書込作業は Safe mode Command Prompt Only でマシンを立ち上げなおして行いましょう。
また、CPU等は定格で行いましょう。
progbios.exeはBIOSアップデートファイルの中に含まれています。
ただし、異常な値をカードに書きこんだ場合は、最悪G400が故障することも考えられます。これらの作業は自己責任でお願いします。PINファイルによる書き換えもカードの改造にあたるため、メーカーの保証は無くなります。PINファイルに付いてはいろいろなG400系サイトで解析記事を紹介しているので、そちらも参照してみるとよいでしょう。
MXINFO.exeというツールを使用すると、PINファイルの設定内容が解析できるようです。
PINファイルの変更の前に、エマージェンシーディスクを作成しておくことをお勧めします。(→FAQ16)
うまく書き換えが行かなかった場合には、エマージェンシーディスクから立ち上げることで、元のBIOS・PINファイルに戻すことが出来ます。MGATweakというツールを使用すると、各クロック・メモリアクセスタイミング・メモリウエイトタイミング等を変更することが出来ます。
あらかじめこのMGATweakを使用して動作チェックをしておきましょう。(→FAQ60)
うさぎ家さんがPINファイル変更ツールである、”G400 PinFile Editor”を発表しました。
このページで紹介しているPINファイルの解析結果に関する内容確認・変更が可能です。
このソフトウェアは、メールウェアとなっており、使用するには専用掲示板にその旨を書きこむ必要があります。残念ながら、このツールは現在配布中止になっています。
私もベータテストをさせていただきましたが、使いやすいと思います。
現在、「Crossing The Rubicon」、クロスさんHOMEPAGEの情報交換BBSでPINファイルについての解析・実験が行われており、このページもココの内容を参考にさせていただいています。
PINファイルに関しては、さまざまなWebページで解析が進んでいます。
いま、私が理解しているG400 PINファイルの情報は以下の通りです。
PINファイルは、テキストファイルで書かれています。
PINファイルの基本的なフォーマットは、項目開始番地 項目長(Byte単位) 設定値
となります。
先頭に”;”がついた行はコメント行として扱われます。
数字に関しては、
0xの付いた数字は、16進数(0-9,a-f)として扱われます。
そのままの数字は、10進数(0-9)として扱われます。
設定値に”’”で囲まれた値は、文字列として扱われます。
下の表では、その他に、0bが頭についた数字列が出てきますが、これは2進数(0,1)表現となります。念のため、10進・16進・2進の変換表を用意しました。
G400 PINファイルの情報
(あくまで予想であるので、正確である保証はありません。)項 目 G400 Dualhead 32MB
G400 MAX化例
PROGBIOSのバージョン[コメント] ;MGA Bios Programming Utility v1.93d ;MGA Bios Programming Utility v1.93d Matroxの(C)表示[コメント] ;(C) Matrox Graphics Inc. (1999) ;(C) Matrox Graphics Inc. (1999) [コメント] ; ; PINファイル範囲クリア Fill: 0 127 0xFF Fill: 0 127 0xFF カードタイプ ;Matrox G400 AGP ;Matrox G400 AGP BIOSのバージョン[コメント](V1.5 TVO) ;VGA Enabled - BIOS V1.5 TVO ;VGA Enabled - BIOS V1.5 TVO Signature(PIN) 0 2 0x412e 0 2 0x412e PINサイズ(128) 2 1 0x80 2 1 0x80 不明 3 1 0xff 3 1 0xff PINS Version(4.1) 4 2 0x0401 4 2 0x0401 プログラム日付(1999-10-01)
BIOS(PINファイルを含む)を書き込んだ年月日
1〜 5bit:日
6〜 9bit:月
10〜16bit:年6 2 0xc741 6 2 0xc741 BIOS書換回数(6)
最新PROGBIOS(v2.08.000d)では、
この項目の内容が16進表記で
PINファイルに出力されます。
例:8 2 0x0006
(要:注意)8 2 6 8 2 6 カード種別(DH->MAX) 10 2 0x0300 10 2 0x0700 シリアルナンバー(XXXXXXXX) 12 16 'XXXXXXXX' 12 16 'XXXXXXXX' カードバージョン(104) 28 6 '104' 28 6 '104' PCB Version(906-1) 最新PROGBIOS(v2.08.000d)では、
この項目がPINファイルに出力
されません。(要:注意)34 2 0x38a1 34 2 0x38a1 36 2 0xfff0 36 2 0xfff0 Max VCO freq - SClkの1/4 38 1 75 38 1 90 Max VCO freq - PClkの1/4 39 1 75 39 1 90 RAMDACクロック(PClk)の1/4(CRTC1,8bpp) 40 1 75 40 1 90 RAMDACクロック(PClk)の1/4(CRTC1,16bpp) 41 1 75 41 1 90 RAMDACクロック(PClk)の1/4(CRTC1,24bpp) 42 1 75 42 1 90 RAMDACクロック(PClk)の1/4(CRTC1,32bpp) 43 1 75 43 1 90 RAMDACクロック(PClk)の1/4(CRTC2,16bpp) 44 1 34 44 1 34 RAMDACクロック(PClk)の1/4(CRTC2,32bpp) 45 1 34 45 1 34 不明 46 4 0 46 4 0 不明 50 1 0x3f 50 1 0x3f 不明 51 1 0xff 51 1 0xff 不明 52 1 0xff 52 1 0xff 不明 53 1 0xc2 53 1 0xc2 不明 54 1 0xff 54 1 0xff コアクロック(GCLK)の値(VGA用)
(分周比(GCLK)を考えると基本クロック(SCLK)の1/2)
(分周比(MCLK)を考えるとメモリクロックの1/2)
(分周比(WCLK)を考えるとワープクロックの1/1)55 1 82 55 1 82 GCLK 82MHz
SCLK 164
MCLK 164
WCLK 82同左
メモリアクセスタイミング(VGA用)
と、言われているが詳細は不明。
[通常PIN55の値の1/2をセット]56 1 41 56 1 41 各動作クロックの分周比(VGA用)
GCLK=1/2 MCLK=1/1 WCLK=1/2コアクロック:
1〜2bit目 クロックソース設定
00:PCI
01:PLL(通常はこれを選択)
10:EXT
11:AGP
3bit目 予備
4〜6bit目 分周比設定
000:1/3 001:2/5
010:4/9 011:1/2
100:2/3 101:1/1
7〜10bit目 adj設定
0000:n/a 0001:3.0
0010:3.5 0011:4.0
0100:4.5 0101:5.0
0110:5.5 0111:6.0
1000:6.5 1001:7.0
1010:7.5 1011:8.0
1100:8.5 1101:9.0
1110:9.5 1111:10.0
メモリクロック:
11〜12bit目 クロックソース設定
内容は1〜2bit目と同じ
13bit目 予備
14〜16bit目 分周比設定
内容は4〜6bit目と同じ
17〜20bit目 adj設定
内容は7〜10bit目と同じ
ワープクロック:
21〜22bit目 クロックソース設定
内容は1〜2bit目と同じ
23bit目 予備
24〜26bit目 分周比設定
内容は4〜6bit目と同じ
27〜30bit目 adj設定
内容は7〜10bit目と同じ
31〜32bit目 予備
Takさんより情報をいただきました。ありがとうございます。57 4 0x0190a419 57 4 0x0190a419
コアクロック :クロックソース設定 PLL コアクロック :分周比設定 1/2 コアクロック :adj設定 n/a メモリクロック:クロックソース設定 PLL メモリクロック:分周比設定 1/1 メモリクロック:adj設定 n/a ワープクロック:クロックソース設定 PLL ワープクロック:分周比設定 1/2 ワープクロック:adj設定 n/a 同左
標準設定(0x0190a419)
←32Bit 1Bit→
PIN 0x 0 1 9 0 A 4 1 9 PIN 0b 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 X X 0000 011 X 01 0000 101 X 01 0000 011 X 01 設定値 X X n/a 1/2 X PLL n/a 1/1 X PLL n/a 1/2 X PLL 有効範囲 X X ワープクロック メモリクロック コアクロック デフォルトの場合、コアクロックとワープクロックには同じ分周比が使われています。
これを片側だけ分周比を変更するなどして非同期にした場合、
システムが不安定になったり、場合によっては画面が表示されなくなることがあります。
コアクロックとワープクロックには同じ分周比をセットした方が安全です。adj設定は、分周比が2/3 or 4/9 のときに必須になります。
この値が小さいと、ノイズが出やすくフリーズしにくくなり、
大きいと、ノイズが出にくくフリーズしやすくなるようです。メモリウエイトタイミング(VGA用) 1〜3bit目 CAS latency
(000:2〜011:5Cycle)
4 未使用
5〜6bit目 Minimum RAS-to-RAS delay
(00:1〜11:4Cycle)
7 未使用
8〜9bit目 Minimum RAS-to-CAS delay
(00:2〜11:5Cycle)
10 未使用
11〜13bit目 Minimum RAS active time
(000:3〜111:10Cycle)
14 未使用
15〜16bit目 Minimum RAS-to-Precharge delay
(00:2〜11:5Cycle)
17〜18bit目 未使用
19〜20bit目 Minimum Write Recovery delay
(00:1〜01:2Cycle)
21 未使用
22 Minimum Read-to-Precharge delay
(0:fast〜1:slow)
23 未使用
24〜25bit目 Minimum Special Mode Register delay
(00:1〜01:2Cycle)
26 未使用
27〜28bit目 Minimum Block Write Cycle delay
(00:1〜01:2Cycle)
29 未使用
30〜32bit目 Minimum Block Write-to-Precharge
delay(000:1〜101:6Cycle)
SH,DHとMAXとの違い SH,DH MAX
Minimum RAS-to-CAS delay 3 <-> 4 Cycle
Minimum RAS active time 8 <-> 9 Cycle
Minimum RAS-to-Precharge delay 3 <-> 4 Cycle
Minimum Block Write Cycle delay 2 <-> 1 CycleTakさんより情報をいただきました。ありがとうございます。
61 4 0x24045491 61 4 0x20049911
CAS latency 3 Minimum RAS-to-RAS delay 2 Minimum RAS-to-CAS delay 3 Minimum RAS active time 8 Minimum RAS-to-Precharge delay 3 Minimum Write Recovery delay 2 Minimum Read-to-Precharge delay fast Minimum Special Mode Register delay 1 Minimum Block Write Cycle delay 2 Minimum Block Write-to-Precharge delay 2
CAS latency 3 Minimum RAS-to-RAS delay 2 Minimum RAS-to-CAS delay 4 Minimum RAS active time 9 Minimum RAS-to-Precharge delay 4 Minimum Write Recovery delay 2 Minimum Read-to-Precharge delay fast Minimum Special Mode Register delay 1 Minimum Block Write Cycle delay 1 Minimum Block Write-to-Precharge delay 2 SH,DHの標準設定(0x24045491)
←32Bit 1Bit→
PIN 0x 2 4 0 4 5 4 9 1 PIN 0b 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0 1 001 0 01 0 00 0 0 0 01 00 01 0 101 0 01 0 01 0 001 変換値
(G200CLK)1 X 1 X 0 X 0 X 1 X 1 X 5 X 1 X 1 X 1 設定値
(MGA Tweak)2 2 1 fast 2 3 8 3 2 3
MAXの標準設定(0x20049911)
PIN 0x 2 0 0 4 9 9 1 1 PIN 0b 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 001 0 00 0 00 0 0 0 01 00 10 0 110 0 10 0 01 0 001 変換値
(G200CLK)1 X 0 X 0 X 0 X 1 X 2 X 6 X 2 X 1 X 1 設定値
(MGA Tweak)2 1 1 fast 2 4 9 4 2 3
MGA Tweakでのお勧め設定(0x00005481)
PIN 0x 0 0 0 0 5 4 8 1 PIN 0b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 000 0 00 0 00 0 0 0 00 00 01 0 101 0 01 0 00 0 001 変換値
(G200CLK)0 X 0 X 0 X 0 X 0 X 1 X 5 X 1 X 0 X 1 設定値
(MGA Tweak)1 1 1 fast 1 3 8 3 1 3 コアクロック(GCLK)の値(3D用)
(分周比(GCLK)を考えると基本クロック(SCLK)の1/2)
(分周比(MCLK)を考えるとメモリクロックの3/4)
(分周比(WCLK)を考えるとワープクロックの1/1)65 1 126 65 1 150 GCLK 126MHz
SCLK 252
MCLK 168
WCLK 126GCLK 150MHz
SCLK 300
MCLK 200
WCLK 150メモリアクセスタイミング(3D用)
と、言われているが詳細は不明。
[通常PIN65の値の1/2をセット]66 1 63 66 1 75 各動作クロックの分周比(3D用)
GCLK=1/2 MCLK=2/3 WCLK=1/2
(詳細はPIN57番と同じ)67 4 0x019b8419 67 4 0x019b8419
コアクロック :クロックソース設定 PLL コアクロック :分周比設定 1/2 コアクロック :adj設定 n/a メモリクロック:クロックソース設定 PLL メモリクロック:分周比設定 2/3 メモリクロック:adj設定 8 ワープクロック:クロックソース設定 PLL ワープクロック:分周比設定 1/2 ワープクロック:adj設定 n/a 同左
標準設定(0x019b8419)
←32Bit 1Bit→
PIN 0x 0 1 9 B 8 4 1 9 PIN 0b 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 X X 0000 011 X 01 1011 100 X 01 0000 011 X 01 設定値 X X n/a 1/2 X PLL 8 2/3 X PLL n/a 1/2 X PLL 有効範囲 X X ワープクロック メモリクロック コアクロック メモリウエイトタイミング(3D用)
(詳細はPIN61番と同じ)
[設定値はPIN61番と同じ]71 4 0x24045491 71 4 0x20049911
CAS latency 3 Minimum RAS-to-RAS delay 2 Minimum RAS-to-CAS delay 3 Minimum RAS active time 8 Minimum RAS-to-Precharge delay 3 Minimum Write Recovery delay 2 Minimum Read-to-Precharge delay fast Minimum Special Mode Register delay 1 Minimum Block Write Cycle delay 2 Minimum Block Write-to-Precharge delay 2
CAS latency 3 Minimum RAS-to-RAS delay 2 Minimum RAS-to-CAS delay 4 Minimum RAS active time 9 Minimum RAS-to-Precharge delay 4 Minimum Write Recovery delay 2 Minimum Read-to-Precharge delay fast Minimum Special Mode Register delay 1 Minimum Block Write Cycle delay 1 Minimum Block Write-to-Precharge delay 2 コアクロック(GCLK)の値(2D用)
(分周比(GCLK)を考えると基本クロック(SCLK)の1/2)
(分周比(MCLK)を考えるとメモリクロックの3/4)
(分周比(WCLK)を考えるとワープクロックの1/1)75 1 126 75 1 150 GCLK 126MHz
SCLK 252
MCLK 168
WCLK 126GCLK 150MHz
SCLK 300
MCLK 200
WCLK 150メモリアクセスタイミング(2D用)
と、言われているが詳細は不明。
[通常PIN75の値の1/2をセット]76 1 63 76 1 75 各動作クロックの分周比(2D用)
GCLK=1/2 MCLK=2/3 WCLK=1/2
(詳細はPIN57番と同じ)
[設定値はPIN67番と同じ]77 4 0x019b8419 77 4 0x019b8419
コアクロック :クロックソース設定 PLL コアクロック :分周比設定 1/2 コアクロック :adj設定 n/a メモリクロック:クロックソース設定 PLL メモリクロック:分周比設定 2/3 メモリクロック:adj設定 8 ワープクロック:クロックソース設定 PLL ワープクロック:分周比設定 1/2 ワープクロック:adj設定 n/a 同左
メモリウエイトタイミング(2D用)
(詳細はPIN61番と同じ)
[設定値はPIN61番と同じ]81 4 0x24045491 81 4 0x20049911
CAS latency 3 Minimum RAS-to-RAS delay 2 Minimum RAS-to-CAS delay 3 Minimum RAS active time 8 Minimum RAS-to-Precharge delay 3 Minimum Write Recovery delay 2 Minimum Read-to-Precharge delay fast Minimum Special Mode Register delay 1 Minimum Block Write Cycle delay 2 Minimum Block Write-to-Precharge delay 2
CAS latency 3 Minimum RAS-to-RAS delay 2 Minimum RAS-to-CAS delay 4 Minimum RAS active time 9 Minimum RAS-to-Precharge delay 4 Minimum Write Recovery delay 2 Minimum Read-to-Precharge delay fast Minimum Special Mode Register delay 1 Minimum Block Write Cycle delay 1 Minimum Block Write-to-Precharge delay 2 不明 85 1 0xff 85 1 0xff 不明 86 2 0x0c88 86 2 0x0c88 不明 88 2 0x0c88 88 2 0x0c88 不明 90 1 0xee 90 1 0xee Factory options1(搭載メモリ等) 16-16Bit:Block write(0:ON,1:OFF)
15-15Bit:Write mask(0:ON,1:OFF)
14-14Bit:using chips(0:16Mbit,1:32Mbit)
13-13Bit:RAM種別(0:SGRAM,1:SDRAM)
11-12Bit:搭載メモリ量
(00: 4MB)
(01: 8MB)
(10:16MB)
(11:32MB)
10Bit:Extras1:
(0:Vosc present on)
(1:Vosc present off )
9-9Bit:Fosc (0:27MHz,1:14.83MHz)
注意:このBITを1にすると、
マシンが立ち上がらなくなります。
復旧には別にPCI VGAカードが必要です。
1Bit:Extras2:
(0:Maven on )
(1:Maven off)91 2 0x2cfe
(0b0010110011111110)91 2 0x2cfe
(0b0010110011111110)
Block write ON Write mask ON using chips 32Mbit RAM種別 SGRAM 搭載メモリ量 32MB Extras1 Vosc present on Fosc 27MHz Extras2 Maven on 同左
Factory options2(VGA出力系統数など) 4-4bit:VGA出力系統数[DDC LINE]
(0:1個,1:2個)
3-3bit:(0:DualHead,1:Single out)93 2 0xfff9
(0b1111111111111001)93 2 0xfff9
(0b1111111111111001)
VGA出力搭載数 2個 VGA出力 DualHead 同左
系統系統
現在、VGA(PIN55-61)・3D(65-71)・2D(75-81)の各モードの定義の調査が
「Crossing The Rubicon」、クロスさんHOMEPAGEで行われています。
VGA(Pin55-61) VGA画面(マシン起動直後やDOS全画面モード) 3D(Pin65-71) 8 Bitカラー時すべての解像度
24Bitカラー時すべての解像度
32bitカラー1152*864以上の解像度
のときの設定2D(Pin75-81) 16Bitカラー時すべての解像度
32Bitカラー1024*768以下の解像度
のときの設定が該当するのではないか。という話になっています。
G400シリーズは基本的にPINファイルによってハードウェアスペックを設定しているようで、各モデルごとにほぼ一定のPINファイルパターンがあります。
以下の表は現在発売されている各G400シリーズのPINファイルの相違点のみを抽出した一覧表です。
黄色の枠は、DH 32MB SGRAMと内容が異なる部分です。
このほか、PIN6番・PIN8番の内容も変わっていますが、この部分はBIOSの書き換えのたびに変化するので、ここでは無視してかまわないでしょう。
(PINファイルは、ようちんさんのHP(黄金時代)のPINファイル倉庫のものを参考にさせていただきました。)[閉鎖されました]
PIN
番号PINの意味(予想) SH 16MB
SDRAMSH 16MB
SGRAMSH 32MB
SGRAMDH 16MB
SGRAMDH 32MB
SGRAMMAX 32MB
SGRAMmavel G400-TV
16MB SGRAMRT2000付属
DH 32MB
SGRAM10 カード種別 0x0300 0x0300 0x0300 0x0300 0x0300 0x0700 0x0400 0x0300 12 シリアルナンバー VGAカードの固有の値(アルファベット3文字+数字5文字) 28 カードバージョン VGAカードの製造時期などにより異なる。(104,105,105A等) 34 PCBバージョン VGAカードの製造時期などにより異なる。(0x38a1,0x37b3等) 38 Max VCO freq - SClk 75 75 75 75 75 90 75 75 39 Max VCO freq - PClk 75 75 75 75 75 90 75 75 40 RAMDACクロックの1/4
(CRTC1,8bpp)75 75 75 75 75 90 75 75 41 RAMDACクロックの1/4
(CRTC1,16bpp)75 75 75 75 75 90 75 75 42 RAMDACクロックの1/4
(CRTC1,24bpp)75 75 75 75 75 90 75 75 43 RAMDACクロックの1/4
(CRTC1,32bpp)75 75 75 75 75 90 75 75 61 メモリウエイトタイミング
(VGA用)0x24045491 0x24045491 0x24045491 0x24045491 0x24045491 0x20049911 0x24045491 0x20049911 65 コアクロック(GCLK)の値
(3D用)126 124 126 126 126 150 126 100 66 メモリアクセスタイミング
(3D用)63 62 63 63 63 75 63 50 57 各動作クロックの分周比
(3D用)0x0190a419 0x0190a419 0x0190a419 0x0190a419 0x0190a419 0x0190a419 0x0190a419 0x019ba419 71 メモリウエイトタイミング
(3D用)0x24045491 0x24045491 0x24045491 0x24045491 0x24045491 0x20049911 0x24045491 0x20049911 75 コアクロック(GCLK)の値
(2D用)126 124 126 126 126 150 126 100 76 メモリアクセスタイミング
(2D用)63 62 63 63 63 75 63 50 57 各動作クロックの分周比
(2D用)0x0190a419 0x0190a419 0x0190a419 0x0190a419 0x0190a419 0x0190a419 0x0190a419 0x019ba419 81 メモリウエイトタイミング
(2D用)0x24045491 0x24045491 0x24045491 0x24045491 0x24045491 0x20049911 0x24045491 0x20049911 91 Factory options1 0xdaff 0x2aff 0x2eff 0x28fe 0x2cfe 0x2cfe 0x28f2 0x2cfe 93 Factory options2 0xfffc 0xfff5 0xfff5 0xfff9 0xfff9 0xfff9 0xfffd 0xfff9 この表をみると、G400カードの種類は、PIN10番とPIN91番の組み合わせで判定できることになりますね。
(注:最新PROGBIOS(v2.08.000d)では、34番の項目は出力されません。)
10進 16進
(0x)2進
(0b)備考 0 0 0000 10進・16進・2進の対応表は左表のとおりです。
10進数とは、ご存知のように”0”から”9”までの10個の数字を使用して数値を表す表記です。”9”の次は一桁増えて、”10”となります。
同様に
16進数とは”0”から”9”、”a”から”f”までの16個の数字を使用して数値を表す表記です。”f”の次は一桁増えて、”10”となります。
2進数とは”0”から”1”までの2個の数字を使用して数値を表す表記です。”1”の次は一桁増えて、”10”となります。
なぜ、このような表現をするのかというと、コンピュータは基本的に電圧の有無=”1”or”0”ですべてを表現します。
この最小単位をBitといいます。
通常コンピューターの世界では8Bit=1Byte単位で表現しますが、これで、”00000000”〜”11111111”までの256通りの表現ができることになります。(これが2進数です。)
しかし、1byteの値を表記するのにわざわざ8桁の数字を書くのは大変です。
これを10進で表すと”000”〜”255”となりますが、この場合には1byte表現するのに3桁を使用してしまうし、2Byteの値で、”00000001・11111111”を”001・255”とかくのもスマートではありません。
(この値に1を足してみると、10進で1Byteごとに表記すると”002・000”です。)
なので、8Bitの半分の4Bitごとに表現文字を割り当てて記述を簡略化することにしました。
この場合、”0000”から”1111”までの16通りとなるので、”0000”〜”1001”までは、通常使用している”0”から”9”を、それ以降の足りない部分をアルファベットの"a"〜"f"で表すことにしました。(これが16進数です。)
これで、1Byteの値は2進表現では”00000000”〜”11111111”とされるところが、”00”〜”ff”と2桁ちょうど(”ff”は2桁の16進数で一番大きい値です)で表現できます。
これで2Byteの値で”00000001・11111111”は16進で”01・ff”となり、非常にスマートに表記できることができます。
(この値に1を足してみると、16進で1Byteごとに表記すると”02・00”です。)ただし、一度に複数の表現(10進・16進・2進)を表現すると、どれがどの表現の値なのかが混乱してしまいます。
このため、通常は、
10進数はそのまま書く。
16進数は頭に”0x”をつけるか、最後に”H”(Hex)を付けて書く。
2進数は頭に”0b”を付けるか、最後に”B”(Bin))を付けて書く。
という風に区別をします。つまり、10 = 0x0a = 0aH = 0b1010 = 1010B となるわけです。
ちょっと難しくなりましたが、薀蓄話として覚えておいても損はないと思います。
1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 10 a 1010 11 b 1011 12 c 1100 13 d 1101 14 e 1110 15 f 1111 16 10 10000