使用按位移位反转数字 [英] Reversing a Number using bitwise shift

查看:94
本文介绍了使用按位移位反转数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试找到一种方法来反转数字

I am trying to find a way to reverse a number without

  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个条件.

But I would Like to implement the above 3 conditions.

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

I am looking for a way , possibly using the bit wise shift operators or some other kind of bitwise operation.

有可能吗?如果可以,怎么办?

Is it possible ? If so how ?

PS:如果输入1234,则应返回4321.我只会反转整数和多头

推荐答案

怎么样:

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

代码期望输入非负数.

这可能对您无关紧要,但是值得注意的是getReverse(getReverse(x))不一定等于x,因为它不会保留尾随零.

This may or may not matter to you, but it's worth noting that getReverse(getReverse(x)) does not necessarily equal x as it won't preserve trailing zeroes.

这篇关于使用按位移位反转数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆