■ 16 ビットの加算処理(平成16年春期午後問1)
#include <stdio.h>
/* 基本情報 平成16年春期午後問1 */
/* 16 ビットの加算処理 */
void print_bit(int *b)
{
int i;
for (i = 15; i >= 0; i--)
printf("%d", *(b+i));
putchar('\n');
}
int main()
{
int x[16] = { 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
int y[16] = { 1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 };
int s[16], sw = 0, i;
for (i = 0; i < 16; i++) {
if (sw == 0) {
s[i] = x[i] ^ y[i];
sw = x[i] && y[i];
} else {
s[i] = !(x[i] ^ y[i]);
sw = x[i] || y[i];
}
}
putchar(' '); print_bit(x);
putchar('+'); print_bit(y);
putchar('='); print_bit(s);
return 0;
}