将输入的十进制数转化为二进制数,代码很短。使用了一个循环,做除数运算,每次乘10对应的次方来记录余数。虽然打印的格式是十进制数,但是表现出来的是二进制数。
#define _CRT_SECURE_NO_WARNINGS// 关闭scanf等函数的安全警告#include <stdio.h>
#include <math.h>
// 函数声明:将十进制数转换为二进制数
int convert(int n);int main()
{int n = 0;// 存储输入的十进制数printf("请输入一个十进制数");scanf("%d", &n);// 输出转换后的二进制数printf("%d对应的二进制数是%d", n, convert(n));return 0;
}
// 将十进制数转换为二进制数的函数
int convert(int n)
{// 存储余数int remainder = 0;// 用于计算二进制位的权重int i = 1;// 存储最终的二进制数int binarynumber = 0;// 当 n 不为 0 时,继续循环while (n != 0){// 计算余数remainder = n % 2;// 打印当前的除法过程printf("%d除以2的得数是%d,余数是%d\n", n, n / 2, remainder);// 更新 n 的值n = n / 2;// 计算二进制数binarynumber = binarynumber + remainder * i;// 更新权重i = i * 10;}// 返回最终的二进制数return binarynumber;
}
输出结果:
请输入一个十进制数16
16除以2的得数是8,余数是0
8除以2的得数是4,余数是0
4除以2的得数是2,余数是0
2除以2的得数是1,余数是0
1除以2的得数是0,余数是1
16对应的二进制数是10000