190,reverse bits:https://leetcode.com/problems/reverse-bits/?tab=Description
把一个int的二进制反转。要得到一个int的二进制的每一位,需要使用移位操作,但是取得的每一位如何赋值给结果?一个思路就是先移位再或操作,更好的的是每次对结果的最低位赋值,然后把结果左移一位,那么结果和输入每一次只移动一位。
最后一次结果不能移位。
这个解法是O32的。
7.reverse integer:https://leetcode.com/problems/reverse-integer/?tab=Description
这次是reverse一个integer。可以沿用上次的思路,不过有一些注意点。越界检测。越界发生在输入首先有10位,然后原本不越界,但是reverse以后越界。那么取得输入的第二高位时,赋值给结果,结果乘10,这时结果是10位数,可能越界。乘法的越界和加法不同。加法我们只要检测为负就是越界。乘法不然,因为乘法结果更大,可能越界为负然后又为正,因此不能通过正负数检测,一个好的办法是检测除以10以后是否为原先的值。所以使用一个pre变量。