Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

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 = 0x1D69

whileループを使った変換プログラム

以下は、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ビットごとの区切り方と対応表を覚えておくと、手計算でも素早く変換できるようになります。

  1. JavaScriptで10進数を2進数に変換する方法をわかりやすく解説

    JavaScriptで10進数を2進数に変換したい場合は、NumberオブジェクトのtoString()メソッドを使うのが最もシンプルで一般的な方法です。基数として「2」を指定するだけで、数値を簡単に2進数の文字列に変換できます。基本的な使い方:toString(2)toString(2)と記述することで、10進数の数値を2進数表現の文字列に変換できます。以下がそのサンプルコードです。<!DOCTYPE html> <html>    <body>       <script>   &n

  2. JavaScriptで画像をBlobに変換する方法【サンプルコード&解説つき】

    JavaScriptで画像をBlobに変換するには?Webアプリケーション開発では、画像などのファイルデータを「Blob(Binary Large Object:バイナリラージオブジェクト)」として扱いたい場面が多くあります。たとえば、画像のアップロード処理やCanvasへの描画、サーバーへのデータ送信などがその代表例です。JavaScriptでは、fetch()メソッドとBlobオブジェクトを組み合わせることで、URLから取得した画像を簡単にBlobへ変換できます。以下に実際のサンプルコードを示します。サンプルコード<!DOCTYPE html> <html lang=&q