C语言中怎样区分八进制,十进制,二进制

C语言中怎样区分八进制,十进制,二进制,第1张

在C语言里,整数有三种表示形式:十进制,八进制,十六进制。

其中以数字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语言中怎么知道该数据是什么进制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9731371.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存