C语言位操作练习(二)


编写一个函数 invert(x, p, n),该函数返回对x 执行下列操作后的结
果值:将x中从第p位开始的n个(二进制)位求反(即,1 变成0,0 变成1),x的其余各
位保持不变。

技巧:不变的位与0异或,要取反的位于1异或



#include int invert(int x, int p, int n); int invert(int x, int p, int n) { int t; t = ~(~0 << n); return x ^ (t << (p + 1 - n)); } main() { printf("%d\n", invert(58, 4, 3)); }


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注