我在一个长数组中有一系列长数字。我想取出每个 Long 数字,并想得到它的第一位,并根据第一位,我想处理其他位。就像下面的伪代码一样,
i = 1000000 ;
long[] a = new long[i];
for j = 0 to i
do,
get long lo = a[i];
// get first bit of lo
if first bit = 0
print long number (by removing first bit) in file a1
else
print long number (by removing first bit) in file a2
任何人都可以帮助我,“获取长数字的第一位”和“删除第一位并获取数字”的最快方法是什么?
最佳答案
用 1 对数字进行位掩码。
long temp = a[i];
int bit = (temp >> 63) & 1;
这会将数字按位移动 63 位,并将数字移至 1。如果该位为 1,则该数字为 1;如果该位为 0,则该数字为 0。
如果你想要最低位,则不需要移动
int bit = temp & 1;
关于java - 长数删除第一位 - Fast Way JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323538/