我在一个长数组中有一系列长数字。我想获取每个 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)
任何人都可以帮助我,“获得那个长数字的第一位”和“删除第一位并获得数字”的最快方法是什么?
用 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)
| 归档时间: |
|
| 查看次数: |
1629 次 |
| 最近记录: |