题目是这么说的:
Reverse bits of a given 32 bits unsigned integer.
意思是反转一个unsigned的整形,之前我没看到这个地方,所以走了一些弯路,这个题目在leetcode是属于简单类型的。
python来做是非常简单的
class Solution:
def reverseBits(self, n: int) -> int:
value = bin(n)[2:]
value = "0"*(32-len(value)) + value
value = value[::-1]
return int(value,2)
但是我为啥会把这个单独拿出来说一下呢,主要是另外一个问题,如果问题不是unsigned int,是int呢?比如-1,-1在计算机中标识补码呢,这里也顺便说一下,原码,反码,补码
原码:第一位0,1表示正负,剩下的数字纯二级制标识,带来的问题是计算机对0,1处理不好
反码:正整数和原码一样,负数在原码的基础上,符号位不变,各位取反,带来的问题是+0和-0的问题
补码:正整数和原码一样,负数在反码的基础上符号位不变&#x