使用完整填充将数字转换为二进制字符串?

Viv*_*vek 3 java bitwise-operators

我在java中有一个长变量,并将其转换为二进制字符串,如

long var = 24; Long.toBinaryString(VAL);

现在这只打印7位,但我需要显示所有64位,即所有前导零,我怎么能实现这一点?

原因是我需要迭代每个位并根据状态执行操作,有没有更好的方法呢?

Rob*_*ino 9

如果要迭代这些位,最好不要测试每个位而不将其转换为字符串:

if ((val & (1L << bitPosition)) != 0)
    // etc
Run Code Online (Sandbox Code Playgroud)

但是,如果你真的想要一个二进制字符串,这是用零填充它的最简单方法:

string padding = "0000000000000000000000000000000000000000000000000000000000000000";
string result = padding + Long.toBinaryString(val);
result = result.substring(result.length() - 64, result.length());  // take the right-most 64 digits
Run Code Online (Sandbox Code Playgroud)

  • 确定有循环...只是由strcat/strcpys隐藏.如果你自己提供了领先的'0',那将是相同数量的工作.但是,这种方法很简单. (6认同)

Arn*_*sch 5

您可以使用二元运算符来访问long的各个位.以下代码将"i"的各个位打印为"true"或"false".

long i = 1024;
for(int n = 63; n >= 0; n--)
    System.out.println(n + ": " + ((i & (1L << n)) != 0));
Run Code Online (Sandbox Code Playgroud)