『Cパズルブック』(Alan R.Feuer, 1985)
[Mac M2 Pro 12CPU, MacOS Ventura 13.3.1, clang 14.0.3]
問1.4.2の解法は以下の通りです。
#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.2
PRINT( x | y & ~z); // 3
// 補数~,ビット積&を優先
PRINT( x | (y & (~z))); // 3
// 計算1: ~z(zの補数)
// z = 0b00000001
// ~ --------------
// 0b11111110
// 計算2: y & ~z
// y = 0b00000010
// ~z = 0b11111110
// & --------------
// 0b00000010
// 計算3: x | (y & ~z)
// x = 0b00000011
// Rt = 0b00000010
// | --------------
// 0b00000011
// よって10進数3になる
return 0;
}
3
3