c语言里面 %d是十进制 %o是八进制 %x是十六进制 %多少是二进制

2020-05-27 科技 410阅读

c语言中没有表示二进制的字符,但是你可以根据十进制、八进制或者十六进制转换一下。

可以利用短除法,将十进制转变成二进制,我们一般的思路是这样的,下面给出一个例子:

把20转换成二进制:
20/2=10........余数为0   最低位
10/2=5..........余数为0
5/2=2............余数为1
2/2=1............余数为0
1/2=0............余数为1      最高位
则20换成二进制后是10100

利用短除法可以轻松地将十进制转换成二进制,在编程中是这样用的,以下给出代码:

扩展资料:

在做数据读写传输时最常用也最直观的莫过于十进制数,但是在不同应用场合、存储的方便在C语言开发时候也常采用二进制、八进制和十六进制存储数据。

进制是一种计数机制,对于任何一种进制,如:xx进制,就表示某一位置上的数运算时逢 xx 进一位。例如:时间60′60′,分钟就会加 1,这就是六十进制。计算机中常用的进制有二进制、八进制、十进制、十六进制。

下面给出一个使用C语言编程实现任意进制数(2-16进制)转换为其他任意进制数(2-16进制)的小程序代码:

#include

#include

#include

int TenNum(char a[],int B);              //将输入的数字转换成10进制数

void Numchange(int m, int B);            //将转换好了的10进制数转换为所需进制数

int TenNum(char a[], int B)

{

int len, i, num;

int sum = 0;   

len = strlen(a);                    //求得字符串长度

for (i = 0; i < len; i++)

{

if (a[i] >= '0' && a[i] <= '9')

num = a[i] - '0';

else if (a[i] >= 'A' && a[i] <= 'F')

num = a[i] - 'A' + 10;

sum = sum * B + num;

}

return sum;

}

void Numchange(int m, int B)

{

int n;

if (m)

{

Numchange(m / B, B);

n = m % B;

if (n < 10)

printf("%d", n);           //小于10直接输出

else

printf("%c", n + 55);      //大于10转换成字符输出

}

}

int main()

{

int B, b;

char a[20];     

printf("请输入待转换数的进制(2-16):");

do {

scanf_s("%d", &B);       

} while (B < 2 && B > 16);

printf("请输入待转换数:");

getchar();       

gets_s(a);                        //将输入的n进制数存放在数组a中

int m = TenNum(a, B);             //将输入的数字转换成十进制数

printf("请输入需要转成几进制数(2-16):");

do {

scanf_s("%d", &b);

} while (B < 2 && B > 16);

printf("%d进制数%s转换为%d进制数的结果为:",B,a,b);

Numchange(m, b);                 //将十进制数转换为所需进制数

printf("\n");

system("pause");

return 0;

}

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com