有符号扩展-sign extension
uint16_t sign_extend(uint16_t x, int bit_count) { if ((x >> (bit_count - 1)) & 1) { x |= (0xFFFF << bit_count); } return x; }
代码解释:
- 功能:将不足16位的数字执行符号扩展,至16位
- 参数x指定十进制数字,bit_count指定该十进制数的二进制位数。比如:x=15,bit_count=5,即二进制序列(01111)表示的15
- x >> (bit_count - 1)求出二进制序列的符号位
- 符号位&1判断符号位是否为1
- 符号位为1时,0xFFFF << bit_count为全1的16位二进制序列的低位留足bit_count个0
- x |= (0xFFFF << bit_count)将x的bit_count位二进制序列或到预留的低位中去。至此完成有符号扩展
2022年1月积累
- 31 2:01 序列模式
- 31 1:13 Flow-based programming flow-based programming笔记
- 31 0:53 状态模式
- 30 UE4.22 Subsystem分析 UE4.22 Subsystem分析笔记
- 30 Subsystems
- MeshDrawingPipeline
- 22 400 行 C 代码实现一个虚拟机
- ThreadedRendering