书目《C程序设计(第三版)》
所谓位运算是指进行二进制位的运算。
-
(一)按位与运算符(&)
相应二进制位都为1,结果为1,否则为0。
可用于:
1、清零
2、取一个数中某些指定位
3、保留一个数中某些指定位 -
(二)按位或运算符(|)
相应二进制位只要有一个为1,结果为1。
可用于:
1、置某些指定位为1 -
(三)异或运算符(^)
也称XOR运算符,相应二进制位同号为0(假),异号为1(真)。
可用于:
1、使特定位翻转
2、保留原值
3、不用临时变量交换两个值 -
(四)取反运算符(~)
这是一个单目运算符,对一个二进制数按位取反。
可用于:
1、取最低一位为0的代码,保持其在不同系统下的通用性 -
(五)左移运算符(<<)
用来将一个数的各二进制位全部左移若干位,高位左移后舍弃,右补0。
可用于:
1、左移n位,相当于将该数乘以2的n次方(仅适用于被舍弃的高位中不包含1的情况) -
(六)右移运算符(>>)
用来将一个数的各二进制位全部右移若干位,低位右移后舍弃,左补0(仅适用于无符号数或者有符号数中的正数)。
可用于:
1、右移n位,相当于将该数除以2的n次方 -
(七)不同长度的数据进行运算
如果两个数据长度不同,进行位运算时,系统会将其按照右端对齐。长度较短的数据,当其为正数或者无符号数时,左侧补0,当其为负数时,左侧补1。 -
(八)位段
C语言允许在一个结构体中以位为单位来指定其成员所占的内存长度,这种以位为单位的成员称为“位段”或者“位域”。