其中以数字0开头,由0~7组成的数是八进制。以0X或0x开头,由0~9,A~F或a~f 组成是十六进制。除表示正负的符号外,以1~9开头,由0~9组成是十进制。
1十进制:除表示正负的符号外,以1~9开头,由0~9组成。如,128,+234,-278。
2,八进制:以0开头,由0~7组成的数。如,0126,050000
10进制数10转换为8进制的转换过程如下:
10/8 = 1 (余2)
1/8 = 0 (余1) (1/8中的1是上次运算的商)
所以10的8进制数为12
数据在内存中以二进制补码形式存放!之所以用二进制存放是因为计算机容易识别二进制数,只有0和1表示,编码译码速度块,存取速度块。 我们熟悉的10进制、8进制、16进制数,表示起来都不是很长,如十进制数20,表示成8进制是24,表示成16进制是14,而表示成二进数(最短的是八位)是00010100。可见,二进制数书写起来比较困难,你想想,你想输入一个数值是20的数,你是想输20、24、14、00010100中的哪一个?显然,如果不是特殊的要求,我想我们都不会选择输入00010100吧。 基于此,C语言没有给你提供输入二进制数的格式控制符,不像10进制、8进制、16进制一样有%d、%o、%x这样的输入控制符。也就是说,你不能直接输入输出二进制数! 但是,C语言同样可以表示二进制数,因为数据在内存中都是以二进制数存储的,你想想,存都存的是二进制,还不能表示二进制数吗?只是数据的存储方式你看不到,但是假如你想看到一个数的二进制数,同样可以简单的实现。 请看程序,它就是把num这个数输出成二进制形式: #include<stdioh> #include <stdlibh> void main() { int num; char str[33]; printf("请输入整数num: "); scanf("%d",&num); itoa(num,str,2); printf("%d的二进制形式是%s\n",num,str); }
在 C 语言代码中,通常的数字都是以十进制方式书写的。如果是八进制,必须在前面加“0”,如果是十六进制,必须在前面加“0x”。
比如 13、24、153、23424、11001001 等都是十进制
而 013、024、0153、02342、011001001 等都是八进制
又 0x13、0x24、0x153、0xfa、0x4DA3 等都是十六进制
如果是在字符中需要使用,那么 \ddd 是八进制的,\xhh 是十六进制的
如:\113 是八进制,\x61 是十六进制
十进制转化为十六进制代码:
#include "stdioh" int main()
{
int num=0;
int a[100];
int i=0;
int m=0;
int yushu;
char hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
printf("请输入一个十进制数:");
scanf("%d",&num); while(num>0) { yushu=num%16;
a[i++]=yushu;
num=num/16;
} printf("转化为十六进制的数为:0x"); for(i=i-1;i>=0;i--)//倒序输出 {m=a[i];
printf("%c",hex[m]); } printf("\n");
}
程序运行结果:
扩展资料:
进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。位权是指,进位制中每一固定位置对应的单位值。
举例:二进制数转换为十进制数
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……
所以,设有一个二进制数:0110 0100,转换为10进制为:
下面是竖式:
0110 0100 换算成十进制
第0位 0 20 = 0
第1位 0 21 = 0
第2位 1 22 = 4
第3位 0 23 = 0
第4位 0 24 = 0
第5位 1 25 = 32
第6位 1 26 = 64
第7位 0 27 = 0
公式:第N位2(N)
---------------------------
100
用横式计算为:
0 20 + 0 21 + 1 22 + 0 23 + 0 24 + 1 25 + 1 26 + 0 27 = 100
0乘以多少都是0,所以我们也可以直接跳过值为0的位:
1 22 + 1 25 +126 = 100
参考资料:
百度百科-进制转换
16进制以0x开头,后面跟数字0~9或字母A~F(小写也可以)。如:0x2D(16进制数2D)
8进制以0开头,后面跟数字0~7。如:045(8进制数45)
如果使用printf函数输出时,可以通过格式数明符来控制输出格式。
举例如下:
int x=23;
printf("%x", x); // 以16进制格式输出,输出17;
printf("%o", x); // 以8进制格式输出,输出2。
扩展资料:
C语言是国际上广泛流行的、很有发展前途的计算机高级语言。它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。
早期的 *** 作系统等系统软件主要是用汇编语言编写的(包括
UNIX *** 作系统在内)。由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行 *** 作),例如:对内存地址的 *** 作、位 *** 作等)。人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。于是,C语言就在这种情况下应运而生了。
以上就是关于C语言中怎样区分八进制,十进制,二进制全部的内容,包括:C语言中怎样区分八进制,十进制,二进制、c源程序为什么不能表示二进制,程序本身不就是二进制吗、C语言中怎么知道该数据是什么进制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)