1. 编写一个函数,实现将一个32 位int 型数据的二进制高位到低位实现逆变,例如:
1101 0101 变成1010 1011。
这个题目的解决方法很多,代表性的有两种。
- int func(unsigned int uiData , int length)
- {
- unsigned int uiValue = 0 ;
- int i = 0 ;
- for ( i = 0 ; i < length ; i++ )
- {
- uiValue = (uiValue << 1) + (uiData & 0x01) ;
- uiData = uiData >> 1 ;
- } return uiValue ;
- }
复制代码
这个方法比较常见,通过移位的方法将高位到低位实现逆序。但是这个方法存在唯一的
不足之处是效率低,要进行32 次移位和运算。
|