• 締切済み

ビットオーバーの数値を扱うアルゴリズム

こんにちは! アセンブラによるコーディングをしているのですが8ビット以上の​数値を扱うことができません。 C言語であれば、「int i=2000;」などのように簡単にできるのですが、私の環境で​は256までの数値しか扱えません。 ...... 20万までの数値を扱いたいのですが、何か良い方法はないでしょ​うか? アルゴリズムもしくはヒントを教えていただけたら助かります。 どうか知っている方がいらっしゃったらよろしくお願いします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

一桁の数字同士の足し算・かけ算しか知らなくても、桁上がりを適切に扱えば、何桁の計算でも出来るのと同じやり方を使います。 桁上がりの数字のことをキャリーと言います。 それぞれ24bitのX,Yについて、X + Y を計算するとして、Xの下8bit + Yの下8bit => 和の下8bit + キャリーの2^8倍、Xの中8bit + Yの中8bit + さっきのキャリー => 和の中8bit + キャリーの2^8倍、・・・・

noname#194317
noname#194317
回答No.2

複数のレジスタをつなげて多バイト長のデータを扱う命令があれば一発ですが、そんなしゃれたものはないってことだったら、メモリ上に展開するしかないでしょう。演算はレジスタに入る長さ(今回は8ビット?)に分割して行い、バイトをまたぐ繰り上げ繰り下げが発生すれば、それはオーバーフローフラグを見て自分で管理することになります。 200,000d=30D40h(符号無し整数の場合)なので、これを格納するメモリは3バイト必要です。03h/D4h/40hの三つに分割してメモリに置くことになりますね。

  • DarkMoon
  • ベストアンサー率21% (225/1046)
回答No.1

20万を二進数に直すと、18ビットですが、 これを8ビット環境で扱っている例はあるんですか?

関連するQ&A