Problem
Reverse bits of an integer
Solution
/*
============================================================================
Author : James Chen
Email : a.james.chen@gmail.com
Description : Reverse bits of an integer
Created Date : 14-06-2013
Last Modified :
============================================================================
*/
#include <iostream>
#include <iomanip>
using namespace std;
#define REVERSE_BIT2(num) ((((num) & 0x2) >> 1) | (((num) & 0x01) << 1))
#define REVERSE_BIT4(num) (REVERSE_BIT2(((num) & 0x0C) >> 2) | (REVERSE_BIT2((num) & 0x03) << 2))
#define REVERSE_BIT8(num) (REVERSE_BIT4(((num) & 0xF0) >> 4) | (REVERSE_BIT4((num) & 0x0F) << 4))
int main(int argc, char* argv[])
{
for(unsigned char i = 0; i < 0xFF; ++i){
cout << showbase << hex << uppercase;
cout << setw(4) << (unsigned)i;
cout << "------";
cout << setw(4) << REVERSE_BIT8(i);
cout << endl;
}
return 0;
}
Output
0------ 0
0X1------0X80
0X2------0X40
0X3------0XC0
0X4------0X20
0X5------0XA0
0X6------0X60
0X7------0XE0
0X8------0X10
0X9------0X90
0XA------0X50
0XB------0XD0
0XC------0X30
0XD------0XB0
0XE------0X70
0XF------0XF0
0X10------ 0X8
0X11------0X88
0X12------0X48
0X13------0XC8
0X14------0X28
0X15------0XA8
0X16------0X68
0X17------0XE8
0X18------0X18
0X19------0X98
0X1A------0X58
0X1B------0XD8
0X1C------0X38
0X1D------0XB8
0X1E------0X78
0X1F------0XF8
0X20------ 0X4
0X21------0X84
0X22------0X44
0X23------0XC4
0X24------0X24
0X25------0XA4
0X26------0X64
0X27------0XE4
0X28------0X14
0X29------0X94
0X2A------0X54
0X2B------0XD4
0X2C------0X34
0X2D------0XB4
0X2E------0X74
0X2F------0XF4
0X30------ 0XC
0X31------0X8C
0X32------0X4C
0X33------0XCC
0X34------0X2C
0X35------0XAC
0X36------0X6C
0X37------0XEC
0X38------0X1C
0X39------0X9C
0X3A------0X5C
0X3B------0XDC
0X3C------0X3C
0X3D------0XBC
0X3E------0X7C
0X3F------0XFC
0X40------ 0X2
0X41------0X82
0X42------0X42
0X43------0XC2
0X44------0X22
0X45------0XA2
0X46------0X62
0X47------0XE2
0X48------0X12
0X49------0X92
0X4A------0X52
0X4B------0XD2
0X4C------0X32
0X4D------0XB2
0X4E------0X72
0X4F------0XF2
0X50------ 0XA
0X51------0X8A
0X52------0X4A
0X53------0XCA
0X54------0X2A
0X55------0XAA
0X56------0X6A
0X57------0XEA
0X58------0X1A
0X59------0X9A
0X5A------0X5A
0X5B------0XDA
0X5C------0X3A
0X5D------0XBA
0X5E------0X7A
0X5F------0XFA
0X60------ 0X6
0X61------0X86
0X62------0X46
0X63------0XC6
0X64------0X26
0X65------0XA6
0X66------0X66
0X67------0XE6
0X68------0X16
0X69------0X96
0X6A------0X56
0X6B------0XD6
0X6C------0X36
0X6D------0XB6
0X6E------0X76
0X6F------0XF6
0X70------ 0XE
0X71------0X8E
0X72------0X4E
0X73------0XCE
0X74------0X2E
0X75------0XAE
0X76------0X6E
0X77------0XEE
0X78------0X1E
0X79------0X9E
0X7A------0X5E
0X7B------0XDE
0X7C------0X3E
0X7D------0XBE
0X7E------0X7E
0X7F------0XFE
0X80------ 0X1
0X81------0X81
0X82------0X41
0X83------0XC1
0X84------0X21
0X85------0XA1
0X86------0X61
0X87------0XE1
0X88------0X11
0X89------0X91
0X8A------0X51
0X8B------0XD1
0X8C------0X31
0X8D------0XB1
0X8E------0X71
0X8F------0XF1
0X90------ 0X9
0X91------0X89
0X92------0X49
0X93------0XC9
0X94------0X29
0X95------0XA9
0X96------0X69
0X97------0XE9
0X98------0X19
0X99------0X99
0X9A------0X59
0X9B------0XD9
0X9C------0X39
0X9D------0XB9
0X9E------0X79
0X9F------0XF9
0XA0------ 0X5
0XA1------0X85
0XA2------0X45
0XA3------0XC5
0XA4------0X25
0XA5------0XA5
0XA6------0X65
0XA7------0XE5
0XA8------0X15
0XA9------0X95
0XAA------0X55
0XAB------0XD5
0XAC------0X35
0XAD------0XB5
0XAE------0X75
0XAF------0XF5
0XB0------ 0XD
0XB1------0X8D
0XB2------0X4D
0XB3------0XCD
0XB4------0X2D
0XB5------0XAD
0XB6------0X6D
0XB7------0XED
0XB8------0X1D
0XB9------0X9D
0XBA------0X5D
0XBB------0XDD
0XBC------0X3D
0XBD------0XBD
0XBE------0X7D
0XBF------0XFD
0XC0------ 0X3
0XC1------0X83
0XC2------0X43
0XC3------0XC3
0XC4------0X23
0XC5------0XA3
0XC6------0X63
0XC7------0XE3
0XC8------0X13
0XC9------0X93
0XCA------0X53
0XCB------0XD3
0XCC------0X33
0XCD------0XB3
0XCE------0X73
0XCF------0XF3
0XD0------ 0XB
0XD1------0X8B
0XD2------0X4B
0XD3------0XCB
0XD4------0X2B
0XD5------0XAB
0XD6------0X6B
0XD7------0XEB
0XD8------0X1B
0XD9------0X9B
0XDA------0X5B
0XDB------0XDB
0XDC------0X3B
0XDD------0XBB
0XDE------0X7B
0XDF------0XFB
0XE0------ 0X7
0XE1------0X87
0XE2------0X47
0XE3------0XC7
0XE4------0X27
0XE5------0XA7
0XE6------0X67
0XE7------0XE7
0XE8------0X17
0XE9------0X97
0XEA------0X57
0XEB------0XD7
0XEC------0X37
0XED------0XB7
0XEE------0X77
0XEF------0XF7
0XF0------ 0XF
0XF1------0X8F
0XF2------0X4F
0XF3------0XCF
0XF4------0X2F
0XF5------0XAF
0XF6------0X6F
0XF7------0XEF
0XF8------0X1F
0XF9------0X9F
0XFA------0X5F
0XFB------0XDF
0XFC------0X3F
0XFD------0XBF
0XFE------0X7F
Press any key to continue . . .