package LeetCode_190 /** * 190. Reverse Bits * https://leetcode.com/problems/reverse-bits/description/ * Reverse bits of a given 32 bits unsigned integer. * * 如10进制,反转一个数:n * result = result*10+n%10 * n /= 10 * * do in Base-2 so for so on:但n是负数时,%2并不能得到正确的数, * 如: -3: * 11111111111111111111111111111101 * result = result*2+n%2 * n /= 2 * * or use bit operators: * result = (result << 1) | (n & 1) * n >>=1 * * test case: * 43261596 * */ class Solution { fun reverseBits(n_: Int): Int { var n = n_ var result = 0 for (i in 0 until 32) { result = (result shl 1) + (n and 1) n = n shr 1 /*result = result * 2 + n % 2 println("result:$result") n /= 2*/ } //n=-3时:11111111111111111111111111111101 //kotlin答案为负数:-1073741825 //java的才正确为:3221225471,二进制为:10111111111111111111111111111111 return result } }