java - 使用位移位反转数字

标签 java numbers bit-manipulation reverse

我正试图找到一种方法来反转数字没有

  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;        
    }

但我想实现以上3个条件。

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

这可能吗?如果是怎么办?

PS:如果 1234 作为输入,它应该返回 4321。我只会反转整数和长数

最佳答案

怎么样:

int revnum = 0;
while (num != 0) {
  revnum = revnum * 10 + (num % 10);
  num /= 10;
}
return revnum;

代码需要一个非负输入。

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

关于java - 使用位移位反转数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7472824/

相关文章:

algorithm - 这是 walking 1 算法的替代方案吗?

c - 如何有效地使用位操作找到 64 位值中唯一设置位的位置?

java - 如何在XSL链中保留原始文档的systemId?

java - 在 JFrame 中显示 JTable

vb.net - 在 Visual Basic 中使用循环打印平方数

C++ 文件解析参数个数

javascript - 如何判断数字末尾是否有1?

java - 贷款利率返回错误值?

java - Java swing 的绘图布局

java - 有符号字节奇怪行为的位移位