C语言基础之位运算(一)

2023-03-31  本文已影响0人  Eugene_iOS

C语言基础之位运算(一)
C语言基础之位运算(二)
C语言基础之位运算(三)

内存存储的基本单位

1 和 0是计算机存储的基本单元,在计算机设备中看到的所有一切都是1和0两个数组成的,一个即一个位,即二进制中的一个数位,8位(bit)一个字节;反过来说,就是1字节是8位的数据,可以表示0-255共256个数字,即1Byte(字节) = 8Bit(位)。

拓展:十六进制二进制字节等三者之间的关系
1个十六进制数位对应4个二进制数位(即2^4);2个十六进制数位对应8个二进制数位(即2^8);即1个字节
1个字节 =(2 * 1)个十六进制数位 =(2 * 4)个二进制数位
🌰例子:
0xFF = 1111 1111;
oxF = 1111 = 8+4+2+1 = 15;// 一个十六进制数位 = 4个二进制数位;4个二进制数最大表示为15;
例题:十六进制0xF6 转 二进制
F = 1111
6 = 0110
0xF6 = 1111 0110
解析:把十六进制中每个位数上的数单独转换成一个4位的二进制数,再做拼接。


1、按位与 &

1.1、描述:
1.2、真值表:
1.3、特点:
1.4、举例:

// 0x000f = 0000 0000 0000 1111
// 通过按位与上data后,得到result = 0000 0000 0000 0111,就得到低4位数据0111;
int result = data & 0x000f;


2、按位或 |

2.1、描述:
2.2、真值表:
2.3、特点:
2.4、举例:

2 | 3 // 十进制
0000 0010 // 2 的二进制
0000 0011 // 3 的二进制
0000 0011 // 按位或的二进制结果,所以转为10进制就是3

1111 0000
0000 1111
1111 1111 // 低4位置位1的结果


3、按位取反 ~

3.1、描述:
3.2、特点:
3.3、举例:

data = 0000 0010
result = 111 1101 // 位取反后的结果

1000 1111 // data
1111 1110 // ~1 即 ~(0000 0001)
1000 1110 // result = data & ~(1),此时data最低一位置为了0


4、按位异或 ^

4.1、描述:
4.2、真值表:
4.3、特点:
4.4、举例:

2 ^ 3
0000 0010
0000 0011
0000 0001 // 2 ^ 3的结果为1


5、左移运算 <<

5.1、描述:
5.2、特点:
5.3、举例:

0000 0011 // 3
0000 1100 // 12 == 3按位左移2


6、右移运算 >>

6.1、描述:
6.2、特点:
6.3、举例:

// 0x00f0 = 0000 0000 1111 0000, 将data和0x00f0按位与,结果result = 0000 0000 1110 0000
// 然后像右移4位 ,得到最终所需要的数据result_number = 0000 0000 0000 1110
int result_number = (data & 0x00f0) >> 4;

写在最后

iOS蓝牙通信数据处理,位运算,数据的大小端转换

上一篇 下一篇

猜你喜欢

热点阅读