在 Java 中反转给定数字的实际位

javaserver side programmingprogramming更新于 2024/7/7 1:19:00

给定一个非负整数 n。目标是反转 n 的位并报告这样做产生的数字。反转位时,使用整数的实际二进制形式;不考虑前导 0。

让我们看看这个的各种输入输出场景

输入 − 13

输出 − 反转给定数字 11 的实际位

(13)10 = (1101)2。
反转位后,我们得到:
(1011)2 = (11)10

解释 − 从输入数字中获得二进制位,然后将其反转,最后转换为十进制格式并作为输出返回。

输入 − 18

输出 − 反转给定数字 9 的实际位

(18)10 = (10010)2。
反转位后,我们得到:
(1001)2 = (9)10

解释 −从输入数字中获得二进制位,然后将其反转,最后转换为十进制格式,并作为输出返回。

以下程序中使用的方法如下

  • 在主方法中

    • 将数字作为输入并传递给方法 reverseBinaryBits(int input)

  • 在方法 reverseBinaryBits(int input)

    • 初始化变量 rev_input 以存储反转位

    • 循环以断点(输入 > 0)迭代(我们从右边遍历)

      • 按位右移操作用于逐位检索 n 的二进制表示中的位,按位左移操作用于将它们累加到 rev 中。

示例

class TutorialsPoint{
   public static int reverseBinaryBits(int input){
      int rev_input = 0;
      while (input > 0){
         rev_input <<= 1;
         if ((int) (input & 1) == 1){
            rev_input ^= 1;
         }
         input >>= 1;
      }
      return rev_input;
   }
   public static void main(String[] args){
      int input = 13;
      System.out.println("Reverse actual bits of the given number");
      System.out.println(reverseBinaryBits(input));
   }
}

输出

如果我们运行上述代码,它将生成以下输出

Reverse actual bits of the given number
11

相关文章