位操作

注意负数用补码表示

1、按位左移<< 即将二进制左移N位,舍弃高位,低位用0 填充, 注意符号位的丢失使数的正负转变


2、按位右移>> 即将二进制右移N位,舍弃低位,高位用符号位填充


3、按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0

主要用于未串的截取

按位与运算有两种典型用法,一是取一个位串信息的某几位,如以下代码截取x的最低7位:x & 0177。
二是让某变量保留某几位,其余位置0,如以下代码让x只保留最低6位:x = x & 077。
1.清零 

“按位与”通常被用来使变量中的某一位清零。如下例: 

a=0xfe; //a=0b 11111110 

a=a&0x55; 

//使变量a的第1位、第3位、第5位、第7位清零 a= 0b 01010100 

2.检测位 

要知道一个变量中某一位是‘1’还是‘0’,可以使用与操作来实现。 

a=0xf5; //a=0b 11110101 

result=a&0x08; //检测a的第三位,result=0 

3.保留变量的某一位 

要屏蔽某一个变量的其它位,而保留某些位,也可以使用与操作来实现。 

a=0x55; //a=0b 01010101 

a=a&0x0f; //将高四位清零,而保留低四位 a=0x05 

4、按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1

“按位或”运算最普遍的应用就是对一个变量的某些位置‘1’。如下例: 



5、按位异或运算 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1  只有当且仅当其中的一个条件满足时 ,逻辑异或是一种排除性的或

两个位串信息的位差异的标志位,
1。 交换两个值,不用临时变量,假如a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现:
a=a^b; b=b^a;     a=a^b;

 1.翻转某一位 
 当一个位与‘1’作异或运算时结果就为此位翻转后的值。如下例: 
a=0x35; //a=0b00110101 
a=a^0x0f; //a=0b00111010 a的低四位翻转 

2.保留原值 
当一个位与‘0’作异或运算时,结果就为此位的值。如下例: 
a=0xff; //a=0b11111111 
a=a^0x0f; //a=0b11110000 与0x0f作异或,高四位不变,低四位翻转 

6求反运算 求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。



7求反运算和异或运算的区别在于操作的个数,取反只有一个操作数,异或是两个操作数的相反

阅读更多
想对作者说点什么? 我来说一句

位操作技巧

位操作技巧

zheng0518 zheng0518

2017-05-06 12:35:47

阅读数:1447

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭