首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问一个关于位操作的算法。好像比较难。

2012-08-27 
请教一个关于位操作的算法。。。好像比较难。。。。算法的目的是这样的:有一个字节,比如0x67。这个字节一共8个位,

请教一个关于位操作的算法。。。好像比较难。。。。
算法的目的是这样的:

有一个字节,比如0x67。这个字节一共8个位,现在需要把这个字节的低n(n>=1 && n<=8)位取反,其他位不变。
比如0x67,把它的低3位取反,其它位不变,就变成了0x60。

各位高手有什么高效率的算法吗?

[解决办法]
刚刚理解错了,取反的话应该这样:
mask = (1 << n) - 1;
data = (data & ~mask) | (~data & mask);

热点排行