社区
C语言
帖子详情
取反某一位的问题
www_adintr_com
2007-08-02 05:04:55
有一整数 num, 另外有一个掩码 mask, mask 中只有一位是 1, 比如 0x00400000.
现在要把 num 中和 mask 为 1 对应的那位取反
有没有比
if(num & mask)
{
num &= ~mask;
}
else
{
num |= mask;
}
更简单的方法?
另外有一数 value 是 0 或 1, 有没有简单的方法把 num 的 mask 位置为 value ?
...全文
1095
14
打赏
收藏
取反某一位的问题
有一整数 num, 另外有一个掩码 mask, mask 中只有一位是 1, 比如 0x00400000. 现在要把 num 中和 mask 为 1 对应的那位取反 有没有比 if(num & mask) { num &= ~mask; } else { num |= mask; } 更简单的方法? 另外有一数 value 是 0 或 1, 有没有简单的方法把 num 的 mask 位置为 value ?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mLee79
2007-08-02
打赏
举报
回复
虫虫哪个题目不好, value 取值应该是 { 0 , mask } 比较好 ....
jixingzhong
2007-08-02
打赏
举报
回复
看岔了 ...
jixingzhong
2007-08-02
打赏
举报
回复
第一个使用 num ^= mask 结果应该不是想要的 ...
其他的位也被修改了,
楼主的本意应该是不修改mask的其他位的吧?
rsp19801226
2007-08-02
打赏
举报
回复
等我写出来都N多高手在说了~~-_-!!
rsp19801226
2007-08-02
打赏
举报
回复
1、好象直接num = num ^ mask;就可以了吧,与0异或不变,与1异或取反。
2、好象判断不了位置,还是要if才行吧。
jixingzhong
2007-08-02
打赏
举报
回复
另外有一数 value 是 0 或 1, 有没有简单的方法把 num 的 mask 位置为 value ?
if(value)
num |= mask;
else
num &= ~mask;
我啃
2007-08-02
打赏
举报
回复
对哦,菜鸟了一次~
david2083
2007-08-02
打赏
举报
回复
num ^= mask 已然OK
我啃
2007-08-02
打赏
举报
回复
num & ~mask保存除mask那位所有的数据
num & mask只留下num对应mask的那位
然后和mask异或,如果是1异或结果是0,如果是0结果是1,完成定位取反
然后两个数值或一个就是拼起来,应该对吧~
我啃
2007-08-02
打赏
举报
回复
好像写错了,再来一个:
num2 = (num & ~mask) | ((num & mask) ^ mask);
lyg_zy
2007-08-02
打赏
举报
回复
用^异或
示例代码如下:
int mask = 0x00400000;
int n = 0x00412345;
int n1 = n ^ mask;
n = 0x00012345;
n1 = n ^ mask;
已测试,不管此位是否为1,都是取反。
我啃
2007-08-02
打赏
举报
回复
num = (num & ~mask) | (num ^ mask);
我啃
2007-08-02
打赏
举报
回复
不来蹭点分对不起自己~
houdongfeng
2007-08-02
打赏
举报
回复
异或
python 实现按位
取反
# 题目:学习使用按位
取反
~。 # 程序分析:~0=1; ~1=0;
取反
某
一位
给定一整数: int num; 给定一掩码: int mask; 其中mask中某
一位
为1,其余为0,这
一位
对应num中需要被
取反
的位。 方法如下: num = (num & (~mask)) // 保存除
取反
位外的其它位 | (num ^ mask) // 所有位
取反
,也就是异或 所以,需要
取反
的位
取反
了,且其余位不变
C语言位操作中指定的某
一位
数置0、置1、
取反
C语言位操作中指定的某
一位
数置0、置1、
取反
一、指定的某
一位
数置1 宏 #define setbit(x,y) x|=(1 二、指定的某
一位
数置0 宏 #define clrbit(x,y) x&=~(1 三、指定的某
一位
数
取反
宏 #define reversebit(
某
一位
取反
如何对一个十六进制数的某
一位
取反
,用C语言写,比如0x2F,我想对第六位
取反
0x2F ^ (1 << (6-1)) 结果是15 第n位
取反
同(1 << (n -1)) 异或。
对二进制的每
一位
分别
取反
(某
一位
)
string a; cin >> a; // 1010 int x = 0; // 先转成10进制数字 for(int i = 0; i < a.size(); i++){ x += ((a[i]-'0') << (a.size()-i-1)); } int revnum; // 对每
一位
取反
for(int i = 0; i < a.size(); i++){ revnum = x ^ (1 << i); cout &
C语言
70,024
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章