c语言里面 %d是十进制 %o是八进制 %x是十六进制 %多少是二进制
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<stdio.h>
#include<string.h>
#include<stdlib.h>
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;
}
C语言中对于不同类型的数据用不同的格式字符。控制printf函数输出格式的是格式字符,printf函数中输出的格式为printf("<格式化字符串>", <参量表>),格式化字符串由格式控制、和输出表列两部分组成,其中格式控制包含格式声明和普通字符。
格式声明由“%”和格式字符组成,如%d、%f等。它的作用是将输出的数据类型转换为指定的格式然后输出。普通字符是需要在输出时原样输出的字符。
扩展资料:
printf函数格式字符:
常用的有以下几种格式字符:
1. d格式字符。用来输出十进制整数。有以下几种用法:
(1)%d,按整型数据的实际长度输出。
(2)%md,m为指定的输出字段的宽度。
(3)%ld,输出长整型数据。
2. o格式符,以八进制整型式输出整数。
3. x格式符,以十六进制数形式输出整数。
4. u格式符,用来输出unsigned型数据,即无符号数,以十进制形式输出。
5. c格式符,用来输出一个字符。
6. s格式符,用来输出一个字符串。
7. f格式符,用来输出实数(包括单双精度),以小数形式输出。
8. e格式符,以指数形式输出实数。
9. g格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出是占宽度较小的一种),且不输出无意义的零。
10. p格式符,用于变量地址的输出。
参考资料:百度百科-格式字符
C语言中没有格式说明符对应二进制形式的输出和输入,如果想以二进制形式输出某个数,可以使用自定义函数来实现。
示例:
#include <stdio.h>
void _printBinary(int a)//递归打印正二进制形式数
{
if (!a)return ;
_printBinary(a/2);
printf ("%d", a%2);
}
void printBinary(int a)//以二进制形式打印所有int型数
{
if (a == 0){
printf ("0");
return ;
}
if (a < 0){
printf ("-");
a = -a;
}
_printBinary(a);
}
int main()
{
int a = 11;
printBinary(a);
return 0;
}
附:其他转换说明符
%a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)
%c 字符
%d 有符号十进制整数
%f 浮点数(包括float和doulbe)
%e(%E) 浮点数指数输出[e-(E-)记数法]
%g(%G) 浮点数不显无意义的零"0"
%i 有符号十进制整数(与%d相同)
%u 无符号十进制整数
%o 八进制整数 e.g. 0123
%x(%X) 十六进制整数0f(0F) e.g. 0x1234
%p 指针
%s 字符串
%% "%"