这个二进制是怎么转换成十进制的

来源:百度知道 编辑:UC知道 时间:2024/06/04 10:12:03
#include<stdio.h>
main(){
int var_num, var_save, k;
int binary[16] = {0};
printf("ener positive integer less shan or equal to 32767\n");
scanf("%d",&var_num);
if (var_num <= 0 || var_num > 32767)
printf("%d is out of bounds\n",var_num);
else{
var_save=var_num;
k=0;
while(var_num != 0)
{
binary[k++] = var_num % 2;
var_num = var_num / 2;
}
printf("The binary equivalent of %d is ",var_save);
for (k = 15; k >=0; k--)
printf("%1d",binary[k]);
}
}
while(var_num != 0)
{
binary[k++] = var_num % 2;
var_num = var_num / 2;
}
感觉这个似乎只能提取出余数啊,是怎么提取出最后一个商的呢?
我知道是余数逆序输出的啊!可是二进制转换成十进制不是要提取最后一个商吗?这个是怎么提取出最后一个商的

是十进制是怎么转换成二进制吧。
本来就不要商,要的是余数啊。
余数从后向前就是二进制的数了

这个运算是十进制转换为二进制的。。利用的是短除2的方式。。然后把余数逆序输出。。不知道解释明白没有。。

while(var_num != 0)
{
binary[k++] = var_num % 2; //这句其实不要理解成求余数,应该理解成检验最后一位2进制是否为1
var_num = var_num / 2; //这句理解成把变量右移1位
}
这段可以这么改写
while(var_num != 0)
{
binary[k++] = var_num & 1;
var_num = var_num >> 1; //这句理解成把变量右移1位
}