C#でfloat(浮動小数点数)を2進数に変換するプログラムの書き方
C#では、剰余演算と除算を組み合わせたループ処理を使うことで、float型の浮動小数点数を2進数表現に変換できます。本記事では、その基本的な考え方と具体的なサンプルコードを解説します。
変換の基本的な流れ
まず、次のようなfloat型の変数を用意します。
float n = 50.5f;
次に、2進数の値を格納するための空の文字列を宣言し、float変数の値が1以上である間、以下の処理を繰り返します。
- n % 2(2で割った余り)を求め、文字列の先頭に連結する
- n / 2で変数の値を更新する
この操作により、桁が小さい方(下位)から順に2進数の各ビットが取り出され、文字列の前方へ追加されていく仕組みです。
string a = "";
while (n >= 1) {
a = (n % 2) + a;
n = n / 2;
}サンプルコード
それでは、ここまでの内容をまとめた完全なプログラムを見てみましょう。
using System;
using System.IO;
using System.CodeDom.Compiler;
namespace Program {
class Demo {
static void Main(string[] args) {
// floatから2進数へ変換
Console.WriteLine("float to binary = ");
float n = 50.5f;
string a = "";
while (n >= 1) {
a = (n % 2) + a;
n = n / 2;
}
Console.Write(a);
}
}
}実行結果
上記のプログラムを実行すると、コンソールには次のように出力されます。
float to binary = 1.5781251.156250.31250.6251.250.5
解説のポイント
このアルゴリズムでは、ループの各回で「2で割った余り」が2進数の各桁に対応し、「2で割った商」が次のループでの処理対象になります。余りの値を文字列の先頭に追加していくことで、最終的に正しい桁順の2進数表現が組み上がります。
なお、浮動小数点数は小数部を持つため、整数のみを扱う場合と比べて出力結果には小数値が含まれます。厳密なIEEE 754形式のビット列が必要な場合は、BitConverter.GetBytes()メソッドなどを使って内部表現を直接取得する方法も検討するとよいでしょう。
-
C++プログラムにおける二分探索(バイナリサーチ)の基本と実装
二分探索(バイナリサーチ)とは二分探索は「半区間探索」「対数探索」「バイナリチョップ」とも呼ばれる検索アルゴリズムで、ソート済みの配列の中から目的の値が存在する位置を効率的に見つけ出します。基本的な仕組みは非常にシンプルです。まず、探したい値(ターゲット値)を配列の中央の要素と比較します。一致しなかった場合は、ターゲット値が存在し得ない半分を丸ごと排除し、残りの半分に対して同様の比較を繰り返します。この「中央との比較」と「範囲の絞り込み」を続け、ターゲット値が見つかるか、検索範囲が空になる(=配列にその値が存在しない)かのどちらかで処理が終了します。アイデア自体は簡単ですが、正しく実装するには
-
Pythonで10進数を2進数に変換する方法|再帰処理とbin()関数の実装例
この記事では、「10進数を2進数に変換する」という問題に対する解決策を、具体的なコード例とともにわかりやすく解説します。 問題の概要 問題: 与えられた10進数の整数を、それに対応する2進数表現へ変換する。 この問題を解くには、大きく分けて2つのアプローチがあります。順番に見ていきましょう。 方法1:再帰を使った実装 10進数を2進数に変換する基本的な考え方は、「数値を2で割り続け、その余りを記録する」ことです。再帰関数を使うと、除算を繰り返しながら余りを自動的に上位の桁から順に出力できます。 サンプルコード def DecimalToBinary(num): if num &g