`
tubaluer
  • 浏览: 1445845 次
文章分类
社区版块
存档分类
最新评论
  • sblig: c / c++ 是不一样的都会输出 100
    j = j++

C/C++中的位运算

 
阅读更多

C/C++提供了六个位运算操作符,可以对整数进行位运算,下面分别来介绍这六种位运算符。

(1)按位与&

将两个操作数的每一个二进制位进行逻辑与运算。

例如:3&5

3:00000011

5:00000101

3&5:00000001

按位与操作有以下两个特别的用处:将某个操作数的若干位置0;取操作数的若干指定位。

1:chara = a & 0xfe;//将char类型变量a的最低位置02:charc;intn;c=n&0xff//将int类型变量n的低8位赋给char类型变量c
(2)按位或|将两个操作数的每一个二进制位进行逻辑或运算。 例如:

3:00000011

5:00000101

3|5:00000111

按位或可以将操作数的某些指定位置1。

1:inta; a = a | 0xff;//将int a的低8位置1

(3)按位异或^

将两个操作数的每一个二进制位进行逻辑异或运算。运算规则:对应位相同,异或结果为0;对应位不同,异或结果为1。

例如:

3:00000011

5:00000101

3^5:00000110

异或的特殊功能:某位与0异或,结果与原数值相同;某位与1异或,结果与原数值相反。

举例:要使00001111低四位反转,只需将其与0xf异或

00001010

00001111

^00000101

(4)按位取反~

对操作数的每个二进制位取反。这个就不细说啦大笑

(5)左移位<<;

按照运算符右侧操作数指定的位数将左侧操作数二进制值向左移动。低位补0,高位舍弃。

(6)右移位>>;

按照运算符右侧操作数指定的位数将左侧操作数二进制值向右移动。低位舍弃;无符号数高位补0,有符号数高位要么补0,要么补符号位。

掌握位运算一方面要牢记概念,另一方面需要注意各种位运算的特点。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics