1.位运算符
&
(1)参与 运算的两数对应的二进位相与
(2)如果两个相应的二进位均为1 则该两位的按位与结果为1
(3)否则 则两位的按位与结果为0
|
(1)参与运算的两数对应的二进位相或
(2)如果两个相应的二进位中有一个位为1 则该两位按位或的结果为1
(3)否则若两个位全为0 则该两位的按位或结果为0
^
(1)参与运算的两数对应的二进位相异或
(2)如果两个相应的二进位相异 则该该两位按位异或的结果为1
(3)否则若两个位相同 则该两位的按位异或结果为0
~
取反
<<
(1)讲一个数的各二进位全部左移指定的位数
(2)在二进位运算中 左移1为相当于将该数乘2 左移n位 则为2^n
(3)左移运算中 该数左移时被溢出舍弃的高位如果全为0 则符合(2)中提到的规律 如果溢出位中包含1 就没上述的规律
>>
(1)讲一个数的各二进位全部右移指定的位数
(2)右移运算中美右移1位 最高位要补0或1 如果原属最高位为0 则右移后左面补0 如果原数最高位为1 则右移后左面补1 ----算术右移
(3)在二进制运算中 右移1位相当于将该数除以2 ....
(4)右移运算中 该数右移时被溢出舍弃的低位如果全为0 则符合(3)中提到的规律 如果溢出位中包含1 就没上述的规律
2.位运算中的规律
在双目运算中两个不同类型的数据进行位运算时 右端对齐 较短数左端补0或补1的规则
3、位段
(1)struct 位段结构名
{位段列表};
位段列表的形式 类型说明符 位段名:位段长度
(2)位段变量的说明方式与结构变量相同
(3)位段的使用和记过成员的使用相同 其一般形式为:
位域变量名.位域名
(4)位段的使用中要注意:位段不能跨两字节 位段的长度不能超出8位 位段可以无位段名 这是它只用作填充或调整位置