在 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