ループ制御以外の算術演算子を使用せずに、2進数の減算、乗算、除算を実行する関数を作成する必要があります。私は今までJavaでコードを書いただけなので、これに頭を悩ませるのに苦労しています。
減算から始めて、プロトタイプで関数を書く必要があります
int bsub(int x, int y)
yを負にしてxに加算するには、yを2の補数に変換する必要があることはわかっていますが、これを行う方法は、1の補数〜演算子を使用して1を加算することによってのみわかりますが、+演算子は使用できません。
badd関数が提供されましたが、yaを負の数にする方法がわかれば、bsubで実装できるようになります。baddのコードを以下に示します。ヒントを事前に感謝します。
int badd(int x,int y){
int i;
char sum;
char car_in=0;
char car_out;
char a,b;
unsigned int mask=0x00000001;
int result=0;
for(i=0;i<32;i++){
a=(x&mask)!=0;
b=(y&mask)!=0;
car_out=car_in & (a|b) |a&b;
sum=a^b^car_in;
if(sum) {
result|=mask;
}
if(i!=31) {
car_in=car_out;
} else {
if(car_in!=car_out) {
printf("Overflow occurred\n");
}
}
mask<<=1;
}
return result;
}