クロスアセンブラでファミコンゲームを作る上で8ビット同士なら良いのですが、
それより上のビットの数値だと計算できないので困っています。なので以下のソースの計算の
誤差がどこから来るのか知りたいのと、どうすればうまく計算が行えるのか
教えていただきたいです。
c
1#include<stdio.h> 2 3#define MAX_BIT 8 4 5int _8or16BitAdd(int A,int B) 6{ 7 int c=0; 8 int sum=0; 9 10 for(int i=0;i<MAX_BIT;i++) 11 { 12 if((A & 1)==1 && (B & 1)==1) c=2;//AとBの両方が1なら桁上がりで2(10(2)) 13 else c=0; 14 sum+=c;//合計にキャリーフラグを足す 15 A>>=1;//シフトして右側へ数値を持っていく 16 B>>=1;//シフトして右側へ数値を持っていく 17 sum+=A+B;//合計+=A+B 18 } 19 printf("%d",sum); 20} 21 22int main() 23{ 24 _8or16BitAdd(50,20); 25}
実行結果
67
C:??????\Debug>
8bitを越える数値が計算できないことに対して(8bitを越える数値を)1bitづつの加算をするコードを書こうとしている理由がわからないのですが、このコードにより何を解決したいのでしょうか。
またそもそもどのような計算をしたいのですか?
回答2件
あなたの回答
tips
プレビュー