本文主要是介绍《leetCode》: Reverse Bits,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
Reverse bits of a given 32 bits unsigned integer.For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).Follow up:
If this function is called many times, how would you optimize it?Related problem: Reverse Integer
思路
此题比较简单,就是将第i为和(31-i)互换即可实现。在编码是现在中,采用求余移位即可。
但是,在完成这个题目的过程中,报了几个错,原因在于:代码不能这么写
uint32_t reverseBits(uint32_t n) {int len=32;int res=0;for(int i=0;i<len;i++){res|=(n&0x01);n>>=1;res<<=1; }return res;
}
如果代码如上所示,这会导致,res多移动了一位(即第0位经过32次的移动到了第32bit位上了,即移出去了,),最多只能移动31位。
修正后的代码如下:
uint32_t reverseBits(uint32_t n) {int len=32;int res=(n&0x01);for(int i=1;i<len;i++){n>>=1;res<<=1; res|=(n&0x01); }return res;
}
这篇关于《leetCode》: Reverse Bits的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!