我有一个旧应用程序,它接受一个整数,将其转换为二进制字符串,反转该字符串,然后将位(一个)的位置作为整数列表获取。例如:
6 -> "110" -> "011" -> (2,3)
7 -> "111" -> "111" -> (1,2,3)
8 -> "1000" -> "0001" -> (4)
在没有 String 操作的现代 Java 中,有什么简洁明了的方法来实现这一点?与 String 的转换对我来说似乎很浪费,而且我知道无论如何都没有简单的方法来翻转 String (没有
String.reverse()
)。
最佳答案
只需依次检查位:
List<Integer> bits(int num) {
List<Integer> setBits = new ArrayList<>();
for (int i = 1; num != 0; ++i, num >>>= 1) {
if ((num & 1) != 0) setBits.add(i);
}
return setBits;
}
Online Demo
6 [2, 3]
7 [1, 2, 3]
8 [4]
关于java - 在 Java 中,如何以整数的反转二进制形式获取 1 的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61736649/