用C/C++如何将二进制的高低位颠倒?

来源:百度知道 编辑:UC知道 时间:2024/06/17 21:39:06
例如 11010001 转化为 10001011,如何转化,请给出C/C++代码!谢谢~

//a=11010001; b=??
b=0;
while(a)
{
b=b*2+a%2;
a/=2;
}

先把int转化为bitset,再转化为string,字符串翻转后,再转化为bitset,最后转化为int。共5行代码。

是这个意思吧:
比如:0x920f(1001001000001111) =〉0xf049(1111000001001001)
给个ushort的:

#include <iostream>
using namespace std;

int main()
{
unsigned short src = 0x920f; // 0x920f(1001001000001111)
unsigned short dst = 0; // 0xf049(1111000001001001)

unsigned short high = 0x8000;
unsigned short low = 0x0001;

for (int i = 15; i > 0; i -= 2)
{
dst += ( (src & high) >> i ) + ( (src & low) << i );

high = high / 2;
low = low * 2;
}

cout << showbase << hex <<