反转性别利用二进制

user 表  反转sex  利用二进制  update user set `sex` =(bin(`sex`)&1)+1;
update user set `sex` = conv( CONVERT( REVERSE(lpad(bin(`sex`),2,0))   , SIGNED  ),2,10);

 

在 C++ 中实现二进制数的反转可以通过多种方式完成,以下是两种常见的实现方法: ### 方法一:基于十进制运算的二进制反转 此方法类似于十进制数的反转逻辑,通过依次提取低位并构建结果来实现二进制数的反转。 ```cpp #include <iostream> using namespace std; class Solution { public: uint32_t reverseBits(uint32_t n) { int i = 32; uint32_t res = 0; while (i--) { res = res * 2 + n % 2; // 提取低位并构建反转结果 n = n / 2; } return res; } }; ``` 该方法通过循环 32 次(因为 `uint32_t` 是 32 位无符号整数)来处理每一位,将输入数的每一位提取出来并逐步构建反转后的结果[^1]。 --- ### 方法二:使用位运算进行二进制反转 此方法利用位运算操作,通过移位和按位与操作来提取每一位并构建反转结果。 ```cpp class Solution { public: uint32_t reverseBits(uint32_t n) { uint32_t rn = 0; for (int i = 0; i < 32; i++) { rn <<= 1; // 将结果左移一位,为下一位腾出空间 rn += (n & 0x01); // 提取当前最低位并加入结果中 n >>= 1; // 输入右移一位,处理下一位 } return rn; } }; ``` 此方法通过逐位提取输入数的最低位,并将其添加到结果的最低位,然后将结果左移一位,从而实现完整的 32 位反转[^4]。 --- ### 示例用法 以下是如何使用上述方法的简单示例: ```cpp int main() { Solution sol; uint32_t n = 0b0000001010010100000111010011100; // 示例输入 uint32_t reversed = sol.reverseBits(n); cout << "Reversed binary number: " << reversed << endl; return 0; } ``` 该程序将输出反转后的二进制数。 --- ### 总结 - 方法一更接近十进制反转的逻辑,适用于理解二进制反转的基本思想。 - 方法二利用位运算,效率更高,适用于实际开发中的性能优化。 两种方法都能有效实现二进制数的反转,具体选择取决于应用场景和性能需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值