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

日期:2016-11-23 08:53:55 人气:1

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

按位操作是对二进制的某位进行 比如要对最低位进行取反,则应当计算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开始
    A+
热门评论