长数删除第一位 - 快速方式JAVA

Arp*_*sss 2 java

我在一个长数组中有一系列长数字。我想获取每个 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
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我,“获得那个长数字的第一位”和“删除第一位并获得数字”的最快方法是什么?

twa*_*249 5

用 1 位掩码数字。

long temp = a[i];
int bit = (temp >> 63) & 1;
Run Code Online (Sandbox Code Playgroud)

这会将数字按位移动 63 位,并将数字与 1 一起移动。如果位为 1,则为 1,如果位为 0,则为 0。

如果你想要最低位,你不需要移动

int bit = temp & 1;
Run Code Online (Sandbox Code Playgroud)