24、位操作与计数:原理、实现与优化

位操作与计数:原理、实现与优化

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值