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

取反某一位的有关问题

2012-03-19 
取反某一位的问题有一整数num,另外有一个掩码mask,mask中只有一位是1,比如0x00400000.现在要把num中和mask

取反某一位的问题
有一整数   num,   另外有一个掩码   mask,   mask   中只有一位是   1,   比如   0x00400000.
现在要把   num   中和   mask   为   1     对应的那位取反
有没有比

if(num   &   mask)
{
      num   &=   ~mask;
}
else
{
    num   |=   mask;
}

更简单的方法?

另外有一数   value   是   0   或   1,   有没有简单的方法把   num   的   mask   位置为   value   ?

[解决办法]
异或
[解决办法]
用^异或
示例代码如下:
int mask = 0x00400000;
int n = 0x00412345;
int n1 = n ^ mask;
n = 0x00012345;
n1 = n ^ mask;
已测试,不管此位是否为1,都是取反。
[解决办法]
num ^= mask 已然OK
[解决办法]
另外有一数 value 是 0 或 1, 有没有简单的方法把 num 的 mask 位置为 value ?

if(value)
num |= mask;
else
num &= ~mask;
[解决办法]
1、好象直接num = num ^ mask;就可以了吧,与0异或不变,与1异或取反。
2、好象判断不了位置,还是要if才行吧。
[解决办法]
虫虫哪个题目不好, value 取值应该是 { 0 , mask } 比较好 ....

热点排行