C语言对十六进制数a第n位取反为什么要(1 << (n -1)) 异或a?看不懂,能解释

C语言对十六进制数a第n位取反为什么要(1<<(n-1))异或a?看不懂,能解释下吗... C语言对十六进制数a第n位取反为什么要(1 << (n -1)) 异或a?看不懂,能解释下吗 展开
 我来答
cdyzxy
2016-11-23 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3767万
展开全部
按位操作是对二进制的某位进行
比如要对最低位进行取反,则应当计算a^=1;而(1<<(1-1))=1,a^=(1<<(n-1));成立
要对第2位进行取反,则应当计算a^=2;而(1<<(2-1))=1<<1=2,a^=(1<<(n-1));成立
依此类推使用a^=(1<<(n-1));均成立
一般来说,数据最低位被标称为第0位,所以这个语句可以写成a^=(1<<n);//n的取值从0开始
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式