C言語で2進数を16進数に変換する方法をわかりやすく解説
2進数と16進数の基本
2進数は「1」と「0」の2種類の数字だけで表現される記数法です。一方、16進数は16種類の数字を使う記数法で、{0, 1, 2, 3 … 9, A(10), B(11), … F(15)} のように表されます。
2進数から16進数への変換手順
2進数を16進数に変換するには、ビット列を最下位桁側から4ビットずつに区切ります。この4ビットのまとまりは「ニブル(nibble)」と呼ばれ、各ブロックを対応する16進数の1桁に置き換えることで変換が完了します。
以下の例で、2進数と16進数の対応関係を確認してみましょう。
0011 1110 0101 1011 0001 1101 3 E 5 B 1 D
C言語では、16進数の定数を「0X3E5B1D」のように表記します。
次に、10進数を2進数へ変換し、さらに16進数へ変換する例を示します。
7529D = 0000 0000 0000 0000 0001 1101 0110 1001B
= 0x00001D69 = 0x1D69whileループを使った変換プログラム
以下は、whileループを使用して2進数を等価な16進数に変換するC言語プログラムです。
#include <stdio.h>
int main(){
long int binaryval, hexadecimalval = 0, i = 1, remainder;
printf("Enter the binary number: ");
scanf("%ld", &binaryval);
while (binaryval != 0){
remainder = binaryval % 10;
hexadecimalval = hexadecimalval + remainder * i;
i = i * 2;
binaryval = binaryval / 10;
}
printf("Equivalent hexadecimal value: %lX", hexadecimalval);
return 0;
}プログラムの仕組み
このプログラムでは、入力された2進数を数値として受け取り、下の桁から順に処理していきます。各桁の値(remainder)に2のべき乗(i)を掛けて加算することで、2進数を内部的に数値へ変換し、最後に書式指定子「%lX」を使って16進数として出力しています。
実行結果
上記プログラムを実行すると、次のような結果が出力されます。
Enter the binary number: 11100 Equivalent hexadecimal value: 1C
この例では、2進数の「11100」が16進数の「1C」に正しく変換されていることがわかります。4ビットごとの区切り方と対応表を覚えておくと、手計算でも素早く変換できるようになります。
-
JavaScriptで10進数を2進数に変換する方法をわかりやすく解説
JavaScriptで10進数を2進数に変換したい場合は、NumberオブジェクトのtoString()メソッドを使うのが最もシンプルで一般的な方法です。基数として「2」を指定するだけで、数値を簡単に2進数の文字列に変換できます。基本的な使い方:toString(2)toString(2)と記述することで、10進数の数値を2進数表現の文字列に変換できます。以下がそのサンプルコードです。<!DOCTYPE html> <html> <body> <script> &n
-
JavaScriptで画像をBlobに変換する方法【サンプルコード&解説つき】
JavaScriptで画像をBlobに変換するには?Webアプリケーション開発では、画像などのファイルデータを「Blob(Binary Large Object:バイナリラージオブジェクト)」として扱いたい場面が多くあります。たとえば、画像のアップロード処理やCanvasへの描画、サーバーへのデータ送信などがその代表例です。JavaScriptでは、fetch()メソッドとBlobオブジェクトを組み合わせることで、URLから取得した画像を簡単にBlobへ変換できます。以下に実際のサンプルコードを示します。サンプルコード<!DOCTYPE html> <html lang=&q