思路:
将一个整数除2后得到商和余数,记录余数后继续把商除2,至商等于0时停止操作。最后把依次得到的余数以相反顺序排列。
注:将十进制转化为其他进制也是这种方法。
例如:
15的二进制数
16/2 商为8 余数为0
8/2 商为4 余数为0
4/2 商为2 余数为0
2/2 商为1 余数为0
1/2 商为0 余数为1 (商为0,停止操作)
15的二进制数为 10000
编程思路:
第一步 16%2=0 16/2=8
第二步 8%2=0 8/2=4
第三步 4%2=0 4/2=2
第四步 2%2=0 2/2=1
第五步 1%2=1 8/2=0 (商为0,停止操作)
15的二进制数为 10000
C语言程序:
#include<stdio.h>
int arr[10000];//创建一个数组储存数
int main()
{
int n;
scanf("%d", &n);
int i = 0;
while ( n!= 0 ) //商等于0时退出循环
{
arr[i] = n % 2;
n /= 2;
i++;
}
for (int j = i - 1; j >= 0; j--)//i多加一个1,需要减去一个1
{
printf("%d", arr[j]);//从后往前打印
}
return 0;
}