第十五章 位操作
1.运算符~ & | ^ >> << &= != ^= >>= <<=
2.二级制十进制和十六进制计数法
3.用于处理一个值中个别位的两个c工具:位运算符和位字段
许多的加解密都是对位进行的操作。
4.二进制数
Pasted Graphic.tiff ¬
5.八进制:
Pasted Graphic 1.tiff ¬
6.十六进制
Pasted Graphic 2.tiff ¬
7.C的位运算符
C提供位的逻辑运算符和移位运算符。
1)位的逻辑运算符
4个位运算符用于整形数据,包括char。对每一位进行操作,而不影响其他的位。
i : 二进制反码或者 按位取反,~
~(10011010) = 01100101
但是该运算符并不创建一个可以在别处使用或者赋值的新值。
val = ~val;
ii:位与 AND: & 通过两个数 逐个位比较才会产生一个新的值。11=1;else =0.
iii: 位或 OR。|
iiii:异或 ^ 只有一个为1 则为1,如果如果都为0,或者1,结果为 0.
8.用法:掩码 MASK
flags = flags & MASK;
9.用法:打开位。有时候,我们可能需要打开一个值中特定的位,同时保持其他位不变。
flags = flags | MASK(使需要打开的那个位为1,其余位位0.);
10 用法:关闭位:
flags = flags & ~ MASK;
11.查看一个位的值。
if((flag & MASK) == MASK)
puts("Wow");
12.移位运算符。左移运算符 <<
(10001010) << 2结果 00101000
13.右移运算符>>。
Pasted Graphic 3.tiff ¬
14.位字段。
Pasted Graphic 4.tiff ¬
Pasted Graphic 5.tiff ¬