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

2024-11-05 21:42:19
推荐回答(5个)
回答1:

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;

}

回答2:

c语言里面没有直接打出二进制数的格式符。

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格式符,用于变量地址的输出。

参考资料:百度百科-格式字符

回答3:

C语言中没有格式说明符对应二进制形式的输出和输入,如果想以二进制形式输出某个数,可以使用自定义函数来实现。

示例:

#include 
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 字符串
%% "%"

回答4:

没有二进制 ,如果要输出,你可以转化一下呀,由十进制转化为二进制,除2就可以了,取他的余数和商,如果要输入,你可以以十进制读入,再转化为二进制数,只不过比较麻烦

回答5:

%d,%o,%x等等只不过是一种格式输出,这些都是将机器存储的二进制数字进行转化从而输出的。它只是一种输出格式。如果你像要输出二进制,你可以利用汇编语言。