闲话少叙,直入正题。思路、过程见注释。
(1)除法实现
// 日期:2019-03-11
// 作者:拥抱Linux
// 用求余的方式,把十进制数转换为二进制数
// 表示范围,int型的范围,-2^31 ~ 2^31-1,即[-2 147 483 648, 2 147 483 647]
// 输入的数值超出int型的范围的话,会出现不正确的结果
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a, b;
printf("*** Decimal Num to Binary Num ***\n");
printf("*** Please input A number within [-2147483648,2147483647] ***\n");
printf("*** Beyond above range will return a Wrong answer. ***\n");
printf("*** And illegal input will End this process. ***\n");
while (scanf("%d", &a) == 1)
{
b = a;
// 2^0是1,用two_t *= 2来在循环中实现2^n
int two_t = 1;
int p[32] = {0};
// 若为负数,符号位置为1,并转换为正数做预先处理
if (0 > a)
{
p[0] = 1;
a = -a;
}
// 非负的整数的十进制转换为二进制