c语言以二进制输出
C语言中,控制printf函数输出格式的是格式字符,printf没有直接打出2进制数的格式符,直接打出16进制的格式符是x格式符,即%x。
printf函数中输出的格式为printf("<格式化字符串>", <参量表>),格式化字符串由格式控制、和输出表列两部分组成,其中格式控制包含格式声明和普通字符。格式声明由“%”和格式字符组成,如%d、%f等。它的作用是将输出的数据类型转换为指定的格式然后输出。普通字符是需要在输出时原样输出的字符。C语言怎么定义一个二进制数
C语言中没有 “二进制数”这种类型,所以没办法直接定义;但可以直接定义16进制数。
例:
int main(){
int a;
scanf("%p",&a);//16进制数输入%p是输入一个十六进制的数scanf("%llx",&a);也可以输入十六进制并且比较正规
printf("%d",a);//十进制输出%d是输出一个十进制的数
printf("0x%x",a);//16进制输出printf("%llX\n",a);也可输出一个十六进制数如果红色部分大写X则输出十六进制为大写字母否则小写x输出为小写字母
}
C语言,十进制数转化为二进制数
方法一
#include<stdio.h>
int main(void)
{
int i=0,n,a[32];
printf("请输入一个十进制整数.\n");
scanf("%d",&n);
while (n>0)
{
a[i]=n%2;
i=i+1;
n=n/2;
}
printf("十进制整数转换为二进制数是:\n");
for(i--;i>=0;i--)
printf("%d",a[i]);
printf("\n");
return 0;
}
方法二
#include "stdio.h"
int main()
{
int a,r,i=0,j=1,count[100]; //输入的是a
printf("请输入一个十进制整数:\n");
scanf("%d",&a);
do //循环,直到a等于0跳出
{
r=a%2; //求每一次的余数,实际上最后输出的也是这个
a=a/2;
i++;
count[i]=r;
}
while(a!=0);
printf("十进制整数转换为二进制数是:\n");
for(j=i;j>0;j--) //这里是倒序输出
printf("%d",count[j]);
}
c语言中合法的十六进制数
表示十六进制数用的是0xff
第一个是数字0,不是字母o
C语言本身支持的三种数字的表示是:
1. 十进制。比如20、457;
2. 十六进制,以0x开头。比如0x7a、0X7A;
3. 八进制,以0开头。比如05、0237
所以C语言没有二进制输入,最多可用函数去实现。
八进制数的表达方法
C/C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0(数字0),如:123是十进制,但0123则表示采用八进制。这就是八进制数在C、C++中的表达方法。
C和C++都没有提供二进制数的表达方法
现在,对于同样一个数,比如是100,在代码中可以用平常的10进制表达,例如在变量初始化时:
int a = 100;
也可以这样写:
int a = 0144; //0144是八进制的100;
千万记住,用八进制表达时,不能少了最前的那个0。否则计算机会通通当成10进制。不过,有一个地方使用八进制数时,却可以不使用加0,那就是用于表达字符的“转义符”表达法。
八进制数在转义符中的使用
学过用一个转义符'/'加上一个特殊字母来表示某个字符的方法,如:'\n'表示换行(line),而'\t'表示Tab字符,'\''则表示单引号。今天又学习了另一种使用转义符的方法:转义符'\'后面接一个八进制数,用于表示ASCII码等于该值的字符。
比如,查一下ASCII码表,找到问号字符(?)的ASCII值是63,那么可以把它转换为八进值:77,然后用 '\77'来表示'?'。由于是八进制,所以本应写成 '\077',但因为C/C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。