10進数を2進数に変換します。
- 構文
- UString = decToBin( dec, signFlg, digits, errorMsg )
- 引数
- dec (Double)必須
- 10進数
- signFlg (Boolean = False)省略可
- 符号付きならばTrueを指定
- digits (Boolean = False,Double = False)省略可
- 変換した2進数の桁数合わせを自動で行うかを示すブール値、もしくは桁数を表す数値(8,16,24,32,64のいずれか)を指定
- errorMsg (Boolean = False)省略可
- エラーメッセージを出力するかを示すブール値
- 戻り値
- 2進数に変換した値
プログラム
10進数から2進数への変換方法
整数部を変換
- 整数部を2で割り、商と余りを求める。
- 商をさらに2で割り、商と余りを求める手順を商が0になるまで繰り返す。
- 求めた余りを下位桁から並べたものが2進数の値となります。
197の場合、以下のように求めることができ11000101となります。
小数部を変換
10進数の値が小数の場合、以下の手順を行います。
- まず小数部の先頭に0.を補い、0.XXXXXの形式にします。この値に2を掛け、結果を整数部と小数部に分けます。
- この処理を小数部が0になるまで繰り返し、整数部を上位桁から並べた値が2進数の値になります。
0.8125の場合、以下のように求めることができ0.1101となります。
符号付き
10進数の場合符号で正負を判断することができますが、2進数の場合は符号ではなく最上位ビット(最も左のビット)で正負を判断します。signFlgにTrueを指定した場合、最上位ビットが0の場合はプラス、1の場合はマイナスを表します。
桁数合わせ
digitsにTrueを指定した場合、2進数に変換した値を8、16、24、32、64のビット数の中から表現できる最小のビット数で表します。
digitsに数値を指定した場合はそのビット数で表現しますが、ビット数が足りない場合はエラー値(ERR_VALUE)を返します。またdigitsにFalseが指定された場合は桁数合わせを行いません。
桁数合わせは以下の手順で行われます。
- 整数部分と小数部分に分け、それぞれ4桁の倍数になるようにゼロ埋めを行う。
- 符号ありの場合-128〜127で8桁、-32768〜32767で16桁、-8388608〜8388607で24桁、-2147783648〜2147783647で32桁、それ以外の値は64桁になるようゼロ埋めします。符号なしの場合255以下で8桁、65535以下で16桁、16777215以下で24桁、4294967295以下で32桁、それ以上の値は64桁になるようゼロ埋めします。
桁数合わせは、まず整数部分と小数部分それぞれで4桁の倍数になるようにゼロ埋めを行います。その後全体の桁数が、8、16、24、32、64になるように整数部分の左側を0埋めします。
そのため整数値の場合は最低8桁、小数値の場合は最低16桁になります。
以下は桁合わせの有無による結果の違いを表したものです。
- 結果
5.5は2進数に変換した結果101.1を整数部分(101)と小数部分(1)に分けます。
2の補数を求める(負数のみ)
ビットを反転して1の補数を求めます。1の補数の最下位ビットに1を加えることで2の補数を求めることができます。
使い方
10進数の整数を2進数に変換
10進数の5、31、405、56825、4666818、1234567890をそれぞれ2進数に変換します。
第一引数のみを指定したときは符号なし、桁数合わせなしで変換されます。桁数合わせなしはゼロ埋めをしないので左端は必ず1になります。
- 結果
10進数の整数を符号付きで2進数に変換
負数を2進数に変換するときは第一引数に負数を指定するだけではエラーが発生します。
- 結果
負数を指定する場合、第二引数にTrue、第三引数にFalse以外の値を指定する必要があります。
以下は-12を桁数合わせを自動調整で2進数に変換するプログラムです。
- 結果
指定した桁数の2進数に変換するには、第三引数に数値を指定します。
以下は-12を2進数で桁数を8、16、24、32、64で表現するプログラムです。
- 結果
10進数の11を符号付き、桁数合わせを自動調整で2進数に変換します。
自動調整のとき桁数は8、16、24、32、64の中で表現できる最小の桁数となります。11を符号なしで変換したときは1011と4桁になるので、最小の8桁で表現されます。
- 結果
10進数の整数を符号なしで2進数に変換
10進数の65536を符号なし、桁数合わせ自動調整で2進数に変換します。
10進数の65536は2進数に変換すると1 0000 0000 0000 0000と17桁になるので、24桁まで左側をゼロ埋めされます。
- 結果
桁数自動調整で2進数に変換
以下は10進数の255を符号付き、桁数自動調整で2進数に変換するプログラムです。
10進数の255を2進数に変換すると1111 1111と8桁の値になります。符号なしの場合、先頭ビットの値は関係ないので結果は1111 1111となります。
符号付きのときは先頭ビットが0で正数、1で負数を表します。もとの10進数の値が255と正数のため先頭に0を付与し正数とします。符号なしの結果に0を付与すると0 1111 1111で9桁になるため、最小の桁数は16桁で自動調整され結果は0000 0000 1111 1111となります。
- 結果
ビット数が足りない場合はエラー値(ERR_VALUE)を返します。10進数の65536は2進数では1 0000 0000 0000 0000となり17桁以上必要なので8桁では表現出来ずエラーが発生します。
- 結果
10進数の整数を符号なしで2進数に変換
10進数の255を符号なし、桁数自動調整で2進数に変換します。
符号なしの場合先頭で符号を表現する必要がないので8桁で表現されます。
- 結果
10進数の小数を2進数に変換
10進数の250.125を2進数に変換します。
- 結果
10進数の12.3を2進数に変換します。
10進数の小数を2進数に変換するとき、ほとんどの値で無限小数となるので正確に変換することができません。
- 結果
桁数合わせを自動調整にした場合、整数部と小数部合わせて32ビットで表現されます。64ビットで表現するにはdigitsに64を指定します。
- 結果
公開日:
更新日:
関連記事
- binToDec関数 (自作関数)
- 2進数を10進数に変換します。負数・小数の値にも対応しています。
- decToHex関数 (自作関数)
- 10進数を16進数に変換します。負数・小数の値にも対応しています。
- binToHex関数 (自作関数)
- 2進数を16進数に変換します。負数・小数の値にも対応しています。
- hexToBin関数 (自作関数)
- 16進数を2進数に変換します。負数・小数の値にも対応しています。
- hexToDec関数 (自作関数)
- 16進数を10進数に変換します。負数・小数の値にも対応しています。
- radToDeg関数 (自作関数)
- 弧度法から度数法に変換します。
- degToRad関数 (自作関数)
- 度数法から弧度法に変換します。
- 16進数
- ARABIC関数 (自作関数)
- ローマ数字をアラビア数字に変換します。
- ROMAN関数 (自作関数)
- アラビア数字をローマ数字に変換します。
