所以我在这里有一些我一直在研究的代码。它将十进制数转换为二进制数。代码运行顺利,但是烦恼的是变量。代码如下:
#include <stdio.h>
int main()
{
long int decimalNumber, remainder, quotient;
int binaryNumber[100], i=1, j;
printf("Enter any decimal number: ");
scanf("%ld",&decimalNumber);
quotient = decimalNumber;
while (quotient!=0) {
binaryNumber[i++]= quotient % 2;
quotient = quotient / 2;
}
printf("Equivalent binary value of decimal number %d: ", decimalNumber);
for (j = i -1 ; j> 0; j--)
printf("%d",binaryNumber[j]);
return 0;
}
我真的觉得变量令人困惑。有人能告诉我变量实际发生了什么吗?特别是binaryNumber[100]
,binaryNumber[i++]
,binaryNumber[j]
和binaryNumber[i++] = quotient % 2
答案 0 :(得分:0)
binaryNumber
是ints
的数组,即整数。它的大小为100.它从0到99(binaryNumber[0]
是第一个元素而binaryNumber[99]
是最后一个元素)。该数组可以包含100个不同或相等值的整数。它们实际上不必具有0 ... 99的值,但是int
范围内的任何其他内容(阅读评论)。
执行int binaryNumber[100]
时,您可以定义此数组
执行binaryNumber[i++]
时,您将访问此数组位置i
中的元素,然后递增i
。这意味着你执行i = i + 1;
同样适用于binaryNumber[j]
当您binaryNumber[i++] = quotient % 2
执行quotient % 2
时,将binaryNumber
的值{/ 1}}分配给位置i
的{{1}}数组,如前所述(并增加i
})。
如果您想知道模数运算符(%
),请阅读here。
答案 1 :(得分:0)
binaryNumber[100]
:这实际上是array of 100 integers
。 integer
可以访问array
中的第一个binaryNumber[0]
binaryNumber[j]
:这意味着数组中的(j-1)th
整数。
binaryNumber[i++]
:当此语句运行时,可以说i=3
。 binaryNumber[i++]
相当于binaryNumber[3]
,这是第4个整数。但是,执行此语句后,i
会增加到4
。
<强> quotient % 2
强>:
%
实际上是模数运算符。示例:13 % 4 = remainder of 13/4 = 1
。
答案 2 :(得分:0)
binaryNumber [100]:它是一个数组,类型为&#34; long int&#34;的元素的序列。您可以使用&#34; array [index] = value&#34;访问特定元素。
binaryNumber [i ++]:访问元素nember然后递增i,例如如果i = 1则接入binaryNumber [1]然后我变为2(使用后)。
binaryNumber [j]:访问元素nember j,j是一个变量,可以用作索引,然后你将访问元素nember当前的j值。
binaryNumber [i ++] = quotient%2:它告诉编译器让binaryNumber中的元素nember i取值为商数%2的值,即9%2 = 1; 5%3 = 2,剩余的商梨2
评论更多信息。
答案 3 :(得分:0)
进行转换的一种简单方法是循环和移位。你可以把它放在一个函数中,使转换看起来不错。这是一个例子:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h> /* for CHAR_BIT */
void binprn (const unsigned long v);
int main (int argc, char **argv) {
long unsigned a = argc > 1 ? strtoul (argv[1], NULL, 10) : 4327;
printf ("\n %lu decimal, binary: ", a);
binprn (a);
putchar ('\n');
return 0;
}
/** unpadded binary representation of 'v'. */
void binprn (const unsigned long v)
{
if (!v) { putchar ('0'); return; };
size_t sz = sizeof v * CHAR_BIT;
unsigned long rem = 0;
while (sz--)
if ((rem = v >> sz))
putchar ((rem & 1) ? '1' : '0');
}
使用/输出强>
$ ./bin/dec2bin
4327 decimal, binary: 1000011100111
$ ./bin/dec2bin 10
10 decimal, binary: 1010
$ ./bin/dec2bin 127
127 decimal, binary: 1111111