『Cパズルブック』(Alan R.Feuer, 1985)
[Mac M2 Pro 12CPU, MacOS Ventura 13.3.1, clang 14.0.3]
問1.4.3の解法は以下の通りです。
#include <stdio.h>
#define PRINT(int) printf("%d\n",int)
int main() {
int x , y, z;
// 先頭に0を付けると8進数になる
x = 03; y = 02; z = 01;
// 問1.4.3
PRINT( x ^ y & ~z); // 1
// 補数~,ビット積&を優先
PRINT( x ^ (y & (~z))); // 1
// 計算1: ~z(zの補数)
// z = 0b00000001
// ~ --------------
// 0b11111110
// 計算2: y & ~z
// y = 0b00000010
// ~z = 0b11111110
// & --------------
// 0b00000010
// 計算3: x ^ (y & ~z)
// x = 0b00000011
// Rt = 0b00000010
// ^ --------------
// 0b00000001
// ビットXOR:同じ0,違う1
// よって10進数1になる
return 0;
}
1
1