如何将位插入长号

时间:2018-03-25 07:52:15

标签: java bit-manipulation bit

有一系列位。是否可以将位插入其他位之间的特定位置?

例如:

  1. 我们有一些数字long n,它看起来像二进制,如10010;
  2. 我们有一些方法long insert(long numb, position);
  3. 使用insert(n, 2)后,我们必须按以下顺序排列:10 1 010
  4. 感谢您的回答!

2 个答案:

答案 0 :(得分:3)

  1. long转换为二进制String
  2. 在指定位置插入位
  3. 然后将其转换回long
  4. public long insert(long number, int position) {
        String longString = Long.toBinaryString(number);
        longString = longString.substring(0, position) + "1" + longString.substring(position);
        return Long.parseLong(longString, 2);
    }
    

答案 1 :(得分:0)

我会将数字'n'向左移1位。然后我会创建一个值为1的long l1,将其左移“positon”位,最后是OR l1和n。

此外,根据您的使用情况,可能需要在移出(或执行位)之前保存/保留最高有效位。