✅ 首先明确几个概念:
1. 位移操作(右移 / 左移)
- 只影响数值的二进制表示位数
- 跟大小端无关
| 操作 | 作用 |
|---|---|
<<(左移) | 把低位推向高位,右边补 0 |
>>(有符号右移) | 把高位推向低位,左边补符号位 |
>>>(无符号右移) | 把高位推向低位,左边补 0 |
一、小端 / 大端的定义
以一个 32 位整数 0x12345678 为例:
- 大端模式(Big Endian) :高字节存在低地址
内存排列:[0x12, 0x34, 0x56, 0x78] - 小端模式(Little Endian) :低字节存在低地址
内存排列:[0x78, 0x56, 0x34, 0x12]
二、位运算的用途
位运算主要是用来提取、拼接或修改某些位,和是否小端/大端没直接关系:
&(按位与):用于提取某些位
例:value & 0xFF提取最低 8 位|(按位或):用于合并/设置某些位
例:byte0 | (byte1 << 8)把两个字节拼成一个 16 位整数