スポンサーリンク
nビット目を取得するマクロ
参考:[c言語]nビット目を取得するマクロ(サンプルコード)
nビット右にシフトして、1でandすればできますね。
下記はマクロの注意点の参考記事です。
参考:[c言語]関数マクロの変数はカッコ()を付けたほうが良い
#define GET_NBIT(a, n) ( ((a) >> (n)) & 1 )
さらに、0〜3ビット目を取得するマクロになります。
各マクロからnビット目を取得するマクロに置き換えます。
#define GET_0BIT(a) GET_NBIT(a, 0) #define GET_1BIT(a) GET_NBIT(a, 1) #define GET_2BIT(a) GET_NBIT(a, 2) #define GET_3BIT(a) GET_NBIT(a, 3)
スポンサーリンク
サンプルコード
下記がサンプルコードになります。
$ cat sample.c #include <stdio.h> #define GET_NBIT(a, n) ( ((a) >> (n)) & 1 ) #define GET_0BIT(a) GET_NBIT(a, 0) #define GET_1BIT(a) GET_NBIT(a, 1) #define GET_2BIT(a) GET_NBIT(a, 2) #define GET_3BIT(a) GET_NBIT(a, 3) int main(){ printf("%d\n", GET_0BIT(6)); printf("%d\n", GET_1BIT(6)); printf("%d\n", GET_2BIT(6)); printf("%d\n", GET_3BIT(6)); return 0; }
下記が実行結果になります。
$ gcc -o sample sample.c $ ./sample 0 1 1 0
スポンサーリンク