【发布时间】:2010-12-14 22:10:53
【问题描述】:
如何将 int 数从十进制转换为二进制。例如:
int x=10; // radix 10
如何让另一个整数有x的二进制表示,如:
int y=1010; // radix 2
仅使用 c?
【问题讨论】:
如何将 int 数从十进制转换为二进制。例如:
int x=10; // radix 10
如何让另一个整数有x的二进制表示,如:
int y=1010; // radix 2
仅使用 c?
【问题讨论】:
整数在内部总是以二进制格式存储——说你想将int x = 10 base 10 转换为int y = 1010 base 2 是没有意义的。也许您想将其转换为表示整数的二进制格式的字符串,在这种情况下您可以使用Integer.toBinaryString。
【讨论】:
您首先应该了解的是,值 是一个抽象概念,不受任何表示形式的限制。例如,如果您有 20 个苹果,则无论表示方式如何,苹果的数量都是相同的。所以,dec("10") == bin("1010").int 的值指的是这个抽象的价值概念,在您打印它之前它没有任何形式。这意味着 base 的概念仅对从 string 到 int 的转换很重要。
【讨论】:
String s = Integer.toBinaryString(10);
http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Integer.html
【讨论】:
它是二进制还是十进制与整数本身没有任何关系。二进制或十进制是整数的物理表示的属性,即字符串。因此,您应该查看的方法是 Integer.toString() 和 Integer.valueOf()(采用 radix 参数的版本)。
顺便说一句,在内部,所有 Java 整数都是二进制的,但源代码中的文字是十进制(或八进制)。
【讨论】:
你的问题有点不清楚,但我会尽力理解它。
如何使另一个整数具有 x 的二进制表示,例如:
int y=1010 radix 2?
从这里看来,您希望在源代码中编写二进制文字。 Java 不支持二进制整数文字。它只支持十进制、十六进制和八进制。
您可以将您的号码写成字符串,并使用带有所需基数的Integer.parseInt:
int y = Integer.parseInt("1010", 2);
但您应该注意,最终结果与编写int y = 10; 相同。在源代码中写为十进制文字的整数10 在各个方面都与从二进制字符串“1010”中解析的整数相同。如果它们都存储为int,则它们的内部表示没有区别。
如果您想将现有整数转换为字符串形式的二进制表示,那么您可以使用Integer.toBinaryString,正如其他人已经指出的那样。
【讨论】:
两个整数将具有相同的内部表示,但是您可以通过 Integer.toBinaryString(i) 显示为二进制
【讨论】:
使用 Integer.toBinaryString()
String y = Integer.toBinaryString(10);
【讨论】:
将一个整数转换为另一个基数(字符串表示):
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)
【讨论】: