Java 如何在长数中插入位

Java 如何在长数中插入位,java,bit-manipulation,bit,Java,Bit Manipulation,Bit,有一个位序列。是否可以在其他位之间的特定位置插入位? 例如: 我们有一些长n的数字,看起来像是二进制的10010 我们有一些方法长插入(长麻木,位置) 使用insert(n,2)后,我们必须得到以下位序列:101010 谢谢你的回答 将long转换为二进制String 在指定位置插入位 然后将其转换回long 我会将数字“n”向左移动1位。然后我将创建一个值为1的长l1,将其向左移位“position”位,最后是l1和n 此外,根据您的用例,可能需要保存或保留最重要的位,然后将其移出(或执行位

有一个位序列。是否可以在其他位之间的特定位置插入位? 例如:

  • 我们有一些长n的数字,看起来像是二进制的10010
  • 我们有一些方法
    长插入(长麻木,位置)
  • 使用
    insert(n,2)
    后,我们必须得到以下位序列:101010
  • 谢谢你的回答

  • long
    转换为二进制
    String
  • 在指定位置插入位
  • 然后将其转换回
    long


  • 我会将数字“n”向左移动1位。然后我将创建一个值为1的长l1,将其向左移位“position”位,最后是l1和n


    此外,根据您的用例,可能需要保存或保留最重要的位,然后将其移出(或执行位)。

    将问题分解为较小的部分,或考虑此问题类似于(然后将其分解成较小的部分)。每个部分都应该相当容易解决。这就是编程的本质。我认为你已经在第三个位置插入了位,而不是第二个位置(第三步)。这太过分了。为什么要转换为字符串,因为它可以很容易地用逐位运算完成?@LưuVĩnhPhúc它可能比用逐位运算效率低,但它更简单。@LưuVĩnhPhúc如果你认为它可以很容易地用逐位运算完成,你可能想发布自己的答案,而不是批评别人的答案,因为他们没有这样做。
    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);
    }