【问题标题】:How can I convert an int number from decimal to binary?如何将 int 数从十进制转换为二进制?
【发布时间】:2010-12-14 22:10:53
【问题描述】:

如何将 int 数从十进制转换为二进制。例如:

int x=10; // radix 10

如何让另一个整数有x的二进制表示,如:

int y=1010; // radix 2

仅使用 c?

【问题讨论】:

    标签: java binary decimal


    【解决方案1】:

    整数在内部总是以二进制格式存储——说你想将int x = 10 base 10 转换为int y = 1010 base 2 是没有意义的。也许您想将其转换为表示整数的二进制格式的字符串,在这种情况下您可以使用Integer.toBinaryString

    【讨论】:

      【解决方案2】:

      您首先应该了解的是, 是一个抽象概念,不受任何表示形式的限制。例如,如果您有 20 个苹果,则无论表示方式如何,苹果的数量都是相同的。所以,dec("10") == bin("1010").
      int 的值指的是这个抽象的价值概念,在您打印它之前它没有任何形式。这意味着 base 的概念仅对从 string 到 int 的转换很重要。

      【讨论】:

      • 我只是想向@Gain 指出,这种没有基数的整数概念不会扩展到浮点数和双精度数。它适用于整数,因为它们在任何基础上都有精确的表示;小数值一般不会。例如,一旦你将一个以 10 为底的值(如 0.1)转换为二进制,你就丢失了一些信息。
      • @Rick Regan:我认为这是为“下一节课”准备的东西:) 在有人潜入那里之前,他应该熟悉整数。也许理解定点算术也有帮助。
      【解决方案3】:

      【讨论】:

        【解决方案4】:

        它是二进制还是十进制与整数本身没有任何关系。二进制或十进制是整数的物理表示的属性,即字符串。因此,您应该查看的方法是 Integer.toString()Integer.valueOf()(采用 radix 参数的版本)。

        顺便说一句,在内部,所有 Java 整数都是二进制的,但源代码中的文字是十进制(或八进制)。

        【讨论】:

          【解决方案5】:

          你的问题有点不清楚,但我会尽力理解它。

          如何使另一个整数具有 x 的二进制表示,例如:int y=1010 radix 2

          从这里看来,您希望在源代码中编写二进制文字。 Java 不支持二进制整数文字。它只支持十进制、十六进制和八进制。

          您可以将您的号码写成字符串,并使用带有所需基数的Integer.parseInt

          int y = Integer.parseInt("1010", 2);
          

          但您应该注意,最终结果与编写int y = 10; 相同。在源代码中写为十进制文字的整数10 在各个方面都与从二进制字符串“1010”中解析的整数相同。如果它们都存储为int,则它们的内部表示没有区别。


          如果您想将现有整数转换为字符串形式的二进制表示,那么您可以使用Integer.toBinaryString,正如其他人已经指出的那样。

          【讨论】:

          • 试试这个 public static void main(String [] arg) { int v=15;字符串 x=Integer.toString(v,2); System.out.println(x); }
          【解决方案6】:

          两个整数将具有相同的内部表示,但是您可以通过 Integer.toBinaryString(i) 显示为二进制

          【讨论】:

            【解决方案7】:

            使用 Integer.toBinaryString()

            String y = Integer.toBinaryString(10);
            

            【讨论】:

              【解决方案8】:

              将一个整数转换为另一个基数(字符串表示):

              int num = 15;
              String fifteen = Integer.toString(num, 2);
              // fifteen = "1111"
              

              将字符串转换回整数

              String fifteen = "1111";
              int num = Integer.valueOf(fifteen, 2);
              // num = 15
              

              这涵盖了任何基础的一般情况。无法将整数显式分配为二进制(仅十进制、八进制和十六进制)

              int x = 255; // decimal
              int y = 0377; // octal (leading zero)
              int z = 0xFF; // hex (prepend 0x)
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2019-06-10
                • 2020-04-28
                • 2011-02-17
                • 1970-01-01
                • 1970-01-01
                • 2010-12-08
                相关资源
                最近更新 更多