背景
我正在做大学作业,这需要我绘制一个由4个十六进制数字表示的模式。到目前为止,我已经设法创建了我需要做的所有事情,除了一点点小事:我的代码中有一个错误,它在A - F(或十进制10-17)之间呈现十六进制值无用的。
我创建了一个方法,我从十六进制中获取十进制值,并将其转换为二进制值。
以下是我获得的结果列表:
Decimal 1 -> Binary 1 -> CORRECT
Decimal 2 -> Binary 1 -> Should be 10
Decimal 3 -> Binary 11 -> CORRECT
Decimal 4 -> Binary 1 -> Should be 100
Decimal 5 -> Binary 101 -> CORRECT
Decimal 6 -> Binary 11 -> Should be 110
Decimal 7 -> Binary 111 -> CORRECT
Decimal 8 -> Binary 1 -> Should be 1000
Decimal 9 -> Binary 1001 -> CORRECT
Decimal 10 -> Binary 101 -> Should be 1010
Decimal 11 -> Binary 1101 -> Should be 1011
Decimal 12 -> Binary 11 -> Should be 1100
Decimal 13 -> Binary 1011 -> Should be 1101
Decimal 14 -> Binary 111 -> Should be 1110
Decimal 15 -> Binary 1111 -> CORRECT
输出实际上与它应该是相反的。如何反转输出,或者让我的代码首先输出正确的顺序?
编辑#2
原始帖子中提到的问题是:
for (int i = 0; i<=3; i++){ //loops trough my pattern array
// Will receive the binary values
while (nDecimal[i]!=0){
pattern[i]= pattern[i]*10 + nDecimal[i]%2;
nDecimal[i]/=2;
System.out.println("Binary ["+i+"] " + pattern[i]);
}
无法正常工作,并按逆序输出二进制数字。简而言之,这是执行转换的代码:
int myDecimal;
int result;
while (myDecimal!=0){
result= result*10 + myDecimal%2;
myDecimal=2;
}
答案 0 :(得分:2)
数值的概念与该值的可能表示之间存在很大差异。
int
,long
,float
,double
和其他人代表数值。只是偶然地是这些值二进制的内部(对计算机)表示 - 首先它们代表&#34;纯粹&#34;号。
&#34;十进制&#34;,&#34;二进制&#34;,&#34;十六进制&#34;,&#34;八进制&#34;还有一些是数字的表示。完全相同的数字量可以表示为上述任何一个。 表示仅在值必须“#34;”呈现给人或某些需要非本机表示的程序或设备时才有意义。
要创建其中一个表示,数值将转换为字符序列 - 0到9表示十进制,0 /表示二进制,0 ... F表示十六进制,0 ... 8为八进制。 (并且,Vince,独立于特定的基数,可以在两个数字之间插入&#34;小数点,以创建小数值的表示。)
Oak,将int
中包含的数值转换为&#34;二进制&#34;使用您使用的机制的表示是聪明的,虽然容易出错并且通常有限。您正在利用数字数量通常被格式化为十进制的事实,以便如果您通过一种多项式处理数字,它将仅使用十进制数字0和1显示,因此将呈现二进制表示。然而,生成二进制表示的方法要少得多。
答案 1 :(得分:1)
今天早上我设法弄明白了,这就是我的所作所为:
int tester;
for (int i = 0; i<=3; i++){
int multiplier = 1;
while (nDecimal[i]>0)
{
int remainder = nDecimal[i]%2;
nDecimal[i] = nDecimal[i]/2;
binary[i] = binary[i] +remainder*multiplier;
multiplier = multiplier * 10;
}}
这段代码的作用是通过nDecimal []数组值循环,将自身转换为binary []。 nDecimal数组中的每个“slot”都在Decimal Base(Base-10)中,并且通过sucessive division方法转换为Binary Base(Base-2)(例如:http://www.wikihow.com/Convert-from-Decimal-to-Binary)
我已经将问题发布到我的问题中,因为它可能对将来的其他人有用