Viv*_*vek 3 java bitwise-operators
我在java中有一个长变量,并将其转换为二进制字符串,如
long var = 24; Long.toBinaryString(VAL);
现在这只打印7位,但我需要显示所有64位,即所有前导零,我怎么能实现这一点?
原因是我需要迭代每个位并根据状态执行操作,有没有更好的方法呢?
如果要迭代这些位,最好不要测试每个位而不将其转换为字符串:
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)
您可以使用二元运算符来访问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)