「2進数変換」には2つの意味がありますが、このツールはどちらにも対応しています。テキストモードでは、文字を1バイトずつ2進数に変換したり、元に戻したりできます。エンコードは UTF-8(アクセント付き文字や絵文字も正しく変換できます)と、厳密な ASCII から選べます。数値モードでは、10進数の値、0x を付けた16進数の値、負の数を入力すると、2進数・16進数・8進数をまとめて表示します。負の数は、選んだビット幅の2の補数で表示されます。パズル用に「hello」を変換するのも、-10 が8ビットのレジスタでどう表されるかを確かめるのも、タブを切り替えるだけです。
「2進数変換」や「バイナリコード変換」は、たいてい次の2つのどちらかを指します。そこで、このツールは両方に対応しています。
テキストモードは、各文字をバイトのコードに変換し、元に戻すこともできます。テキストから2進数、英語から2進数、ASCII から2進数と呼ばれている変換がこれです。既定は UTF-8 なので、アクセント付き文字や絵文字、ほかの言語の文字も正しく変換できます。0〜127 だけを厳密に扱いたいときは ASCII に切り替えてください。
数値モードは、1つの整数を2進数・16進数・8進数にまとめて書き直したり、2進数の値を10進数に戻したりします。負の数(2の補数で表示)や、0x / 0o / 0b の付いた値も入力できます。
変換ツールの下にある 文字ごとの内訳 では、各文字のコードを位の値から求める過程を確認できます。数値モードでも、どの値でも割り算と位の値の計算過程が表示されます。英語だけを ASCII表と一緒に学びたいなら英語→2進数変換ツール、デコードだけなら2進数デコーダーをどうぞ。
10進数から2進数へ: 数を2で割って余り(0か1)を書き留め、商が0になるまで同じことを繰り返します。余りを最後のものから最初のものへ順に読むと、それが2進数です。42 の場合、余りは 0、1、0、1、0、1 なので、42 は2進数で 101010 です(下の表を参照)。
2進数から10進数へ: 各桁に、右から倍々に増える位の値(1、2、4、8、16、32…)を割り当て、1 がある桁の位の値を足します。101010 は 32・8・2 の位が 1 なので、32 + 8 + 2 = 42 です。
16進数への近道: 16進数の1桁はちょうど4ビットなので、2進数を右から4桁ずつに区切り、それぞれを変換します。0010 1010 → 2 A → 0x2A。8進数も同じ要領で、3桁ずつに区切ります。101 010 → 5 2 → 52。
負の数 は2の補数を使います。正の値を選んだビット数で書き、すべてのビットを反転させてから 1 を足します。8ビットの場合、10 は 00001010、反転すると 11110101、1 を足すと 11110110 で、これが -10 です。
上の変換ツールの数値モードは、入力したどの値についても(64ビットまで)これと同じ手順を計算し、結果の下に表示します。
英語の文字なら、答えはいつも同じです。「A」はどこで変換しても 01000001 です。違いが出るのはコード 127 を超える文字からで、その文字の保存方法がツールによって異なるためです。
UTF-8 の é は2バイトで、11000011 10101001 です。今のウェブサイトやアプリ、多くの変換ツールが使っているのはこの方式です。
Latin-1 の é(古い8ビットのエンコードで、いまだに「ASCII」と表示しているツールもあります)は1バイトで、11101001 です。これを UTF-8 のデコーダーに貼り付けると、é ではなく � が表示されます。
UTF-8 の 😀 は4バイトで、11110000 10011111 10011000 10000000 です。255 までのコードしか扱えないツールでは変換できず、たいていはそのまま残されます。
厳密な ASCII は 127 までで、é や絵文字のコードはありません。ほかのサイトと2進数が合わないときは、まずエンコードを確認してください。この変換ツールは UTF-8 と ASCII の両方を切り替えて表示できるので、見比べられます。
日本語の単語を UTF-8 で2進数にするとこうなります。ひらがな・カタカナ・漢字は UTF-8 で1文字あたり3バイトになるため、同じ文字数でも英語よりずっと長い2進数になります。ASCII では日本語の文字を変換できないので、ASCII に切り替えると文字はそのまま残ります。
はい — 11100011 10000001 10101111 11100011 10000001 10000100
いいえ — 11100011 10000001 10000100 11100011 10000001 10000100 11100011 10000001 10001000
ありがとう — 11100011 10000001 10000010 11100011 10000010 10001010 11100011 10000001 10001100 11100011 10000001 10101000 11100011 10000001 10000110
愛してる — 11100110 10000100 10011011 11100011 10000001 10010111 11100011 10000001 10100110 11100011 10000010 10001011
ほかの単語も、上の変換ツールに入力すればすぐに2進数になります。