【问题标题】:how to convert decimal to binary of preferred size in java如何在java中将十进制转换为首选大小的二进制
【发布时间】:2014-09-20 14:19:07
【问题描述】:

我想以二进制打印从164 的数字,但它们应该是这样的:

integer 1 - binary  000001
integer 4 - binary  000100
integer 11 - binary 001011
integer 33 - binary 100001

表示二进制数应为六位数,如果答案不是六位数,则应在开头添加零。

【问题讨论】:

  • 你似乎没有问过问题......祝你好运吗?
  • 由于计算机上的一切最终都是二进制的,因此只需使用一些按位运算符,如移位和按位与,就可以很容易地从任何整数值中获取位。
  • 或许可以向我们展示您迄今为止为我们提供帮助所做的尝试?
  • Integer.toBinaryString();之后,更改您所需的格式。
  • 我说如果我想将整数 4 转换为二进制,那么我可以使用 java.lang.Integer.toString(4,2) 方法来完成,但它以二进制显示“100”但我希望答案为“000100”

标签: java binary integer


【解决方案1】:

Integer.toBinaryString(int i) 为您获取 int 的二进制表示。

如果要附加前导零,最好使用 Apache commons-lang 中的 StringUtils

String str = StringUtils.leftPad(Integer.toBinaryString(i), 6, '0')

【讨论】:

    【解决方案2】:

    这是手动计算等效值的代码-

      public static void main(String args[]) throws IOException
      {
    
          int preferedSize = 6;
    
          BitSet bitSet;
    
          for(int i = 0;i< (1<<preferedSize) ;i++){
              bitSet= new BitSet(preferedSize);
              int count =  0;
              int temp=i;
              while (temp > 0) {
                  if ( (temp % 2) == 1 ) 
                      bitSet.set(count);
                  temp = temp/2;
                  count++;
              }
    
              StringBuffer bf= new StringBuffer();
              for(count=preferedSize-1; count>=0; count--)
                  bf.append((bitSet.get(count)? 1 : 0));
    
              System.out.println(i +" = "+bf.toString());
      }
    

    并使用 Lukasz 的答案,您可以通过像这样在 for 循环中迭代它来获得它 -

      int preferedSize = 6;
    
      for(int i = 0;i< (1<<preferedSize) ;i++){
         System.out.println(i+" = "+StringUtils.leftPad(Integer.toBinaryString(i), 6, '0'));
      }
    

    输出 -

    0 = 000000
    1 = 000001
    2 = 000010
    3 = 000011
    4 = 000100
    5 = 000101
    6 = 000110
    7 = 000111
    8 = 001000
    9 = 001001
    10 = 001010
    11 = 001011
    12 = 001100
    13 = 001101
    14 = 001110
    15 = 001111
    16 = 010000
    17 = 010001
    18 = 010010
    19 = 010011
    20 = 010100
    21 = 010101
    22 = 010110
    23 = 010111
    24 = 011000
    25 = 011001
    26 = 011010
    27 = 011011
    28 = 011100
    29 = 011101
    30 = 011110
    31 = 011111
    32 = 100000
    33 = 100001
    34 = 100010
    35 = 100011
    36 = 100100
    37 = 100101
    38 = 100110
    39 = 100111
    40 = 101000
    41 = 101001
    42 = 101010
    43 = 101011
    44 = 101100
    45 = 101101
    46 = 101110
    47 = 101111
    48 = 110000
    49 = 110001
    50 = 110010
    51 = 110011
    52 = 110100
    53 = 110101
    54 = 110110
    55 = 110111
    56 = 111000
    57 = 111001
    58 = 111010
    59 = 111011
    60 = 111100
    61 = 111101
    62 = 111110
    63 = 111111
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-02
      • 2011-07-09
      • 2013-01-24
      • 1970-01-01
      • 2014-12-04
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多