「BCD命令」の版間の差分

編集の要約なし
編集の要約なし
 
(同じ利用者による、間の4版が非表示)
1行目: 1行目:
'''BCD命令'''とは、[[BCD]]形式(Binary Coded Decimal:二進化十進数)の[[データ]]に対して演算や変換を行う命令の総称です。
'''BCD命令'''とは、[[BCD]]形式(Binary Coded Decimal:二進化十進数)の[[データ]]に対して演算や変換を行う命令の総称です。


[[コンピューター]]で数値を扱う場合、よくあるのは「1バイトで0から255の数値を表す方式」です。昨今のプログラミングの教科書にはその方法しか書かれていないことが一般的です。
[[コンピューター]]で数値を扱う場合、よくあるのは「1バイトで0から255の数値を表す方式」です。昨今の[[プログラミング]]の教科書にはこの方法しか書かれていないことが一般的です。


一方、BCD形式では「1バイトで0から9までの数字」を表します。つまり人間が見やすい10進数表現のまま[[メモリ]]に格納しています。ちなみにメモリ節約のため「4ビットで1桁」を表す[[パックドBCD]]という方式の方が一般的でした。
一方、BCD形式では「1バイトで0から9までの数字」を表します。つまり人間が見やすい10進数表現のまま「1桁=1バイト」のまま[[メモリ]]に格納しています。かなりメモリが無駄になります。ちなみにメモリ節約のため「4ビットで1桁」を表す[[パックドBCD]]という方式の方が一般的でした。


BCD形式は人間が見やすいという利点に加えて、BCD命令では「桁数を指定して演算できる」という特徴がありました。昨今の[[プログラミング言語]]でいえば[[関数]]の[[引数]]にbyte型の[[配列]]と桁数を指定するイメージです。
BCD形式は「人間が見やすい」という利点に加えて、BCD命令では「桁数を指定して演算できる」という特徴がありました。昨今の[[プログラミング言語]]でいえば[[関数]]の[[引数]]にbyte型の[[配列]]と桁数を指定するイメージです。
<source lang=c>
<source lang=c>
byte[] add(byte[] a, byte[] b, int digits)  
byte[] add(byte[] a, byte[] b, int digits)