使用按位移位反转数字

Gau*_*tam 3 java reverse numbers bit-manipulation

我试图找到一种方法来扭转一些

  1. 将其转换为字符串以查找长度
  2. 反转字符串并将其解析回来
  3. 运行单独的循环来计算长度

我目前正在这样做

 public static int getReverse(int num){
        int revnum =0;
        for( int i = Integer.toString(num).length() - 1 ; num>0 ; i-- ){
            revnum += num % 10 * Math.pow( 10 , i );
            num /= 10;
        }
        return revnum;        
    }
Run Code Online (Sandbox Code Playgroud)

但我想实现上述3个条件.

我正在寻找一种方法,可能使用位智能移位运算符或其他一些按位运算.

可能吗 ?如果是这样的话?

PS:如果给出1234作为输入它应该返回4321.我将只反转整数和长整数

NPE*_*NPE 5

怎么样:

int revnum = 0;
while (num != 0) {
  revnum = revnum * 10 + (num % 10);
  num /= 10;
}
return revnum;
Run Code Online (Sandbox Code Playgroud)

代码期望非负输入.

这对你来说可能或不重要,但值得注意的是,getReverse(getReverse(x))它不一定相等,x因为它不会保留尾随零.