位操作与计数:原理、实现与优化
1. 位操作基础
1.1 逻辑与操作
在某些情况下,由于无法将特定数值嵌入单条指令,编译器需先将数值加载到寄存器,再进行逻辑与操作。例如,对于 0xFFFFFDFF 这个数,无法使用 ANDI 指令,编译器会先将其加载到 $V0 寄存器,再执行 AND 操作。
1.2 位移操作
在 C/C++ 中,位位移操作通过 << 和 >> 运算符实现。x86 指令集提供了 SHL (左移)和 SHR (右移)指令。位移操作常用于 2 的幂次方的乘除运算,也可用于特定位的隔离或组合多个分散位的值。
1.3 浮点数符号位操作
在 IEEE 754 格式的浮点数中,符号位位于最高有效位(MSB)。可以通过以下 C 代码实现不使用 FPU 指令来改变浮点数的符号:
#include <stdio.h>
float my_abs (float i)
{
unsigned int tmp=(*(unsigned int*)&i) & 0x7FFFFFFF;
return *(float*)&tmp;
};
float set_sign (float i)
{
unsigned int tmp=(*(unsign
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



