c语言中十进制,八进制,十六进制,c语言只接受二进制十进制十六进制的数
二进制是计算技术中广泛使用的一种数字系统。二进制数据是由0和1表示的数字。它的基数是2,进位规则是“每二进一”,借位规则是“借一当二”,是18世纪德国数学哲学大师莱布尼茨发现的。目前计算机系统基本上是二进制系统,数据主要以补码的形式存储在计算机中。电脑中的二进制是一个非常微小的开关,“开”代表1,“关”代表0。
19世纪,爱尔兰逻辑学家乔治布尔将逻辑命题的思维过程转化为某种符号为“0”的代数演算1 ,二进制就是二进制。0和1是基本运算符。因为它只使用了0和1两个数字符号,所以非常简单方便,易于电子化实现。
二进制数据的表示
二进制数据也采用位置计数法,其比特权重是2的幂。比如二进制数据110.11,每2进1,它的权重顺序是2,2,2。对于n位整数,m位小数的二进制数据用加权系数展开表示,可以写成:
二进制数据通常可以写成:
比如把二进制数据111.01写成加权系数的形式。
像十六进制和八进制一样,二进制也是以二为幂的。
二进制数据算术运算的基本规律与十进制数非常相似。最常用的是加法和乘法。
二进制加法
有四种情况:
0 0=0
0 1=1
1 0=1
1 1=10
0进位是1。
例如,求1011 (2)和11 (2)的和
1011 11[3]
二进制乘法
有四种情况:
00=0
10=0
01=0
11=1
二进制减法
0-0=0,
1-0=1,
1-1=0,
0-1=1。
二进制除法
01=0,
11=1。
计算机中十进制到二进制的转换
计算机中的小数是由二进制得到的,通常是乘以二。
例如,0.65转换成二进制就是:
0.65 2=1.3取1,剩下0.3继续乘以2四舍五入。
0.3 2=0.6取0,剩下0.6继续乘以2四舍五入。
0.6 2=1.2取1,剩下0.2继续乘以2进行四舍五入。
0.2 2=0.4取0,剩下0.4继续乘以2四舍五入。
0.4 2=0.8取0,剩下0.8继续乘以2进行四舍五入。
0.8 2=1.6取1,剩下0.6继续乘以2进行四舍五入。
0.6 2=1.2取1,剩下0.2继续乘以2进行四舍五入。
.
循环直到达到精度极限(所以,计算机保存的十进制数一般都有误差,所以在编程中,如果要比较两个小数是否相等,只能在一定精度范围内比较是否相等。)。这时,十进制的0.65可以表示为:二进制的0.1010011。
另外值得一提的是,在计算机中,除了十进制是有符号的,其他如二进制、八进制、十六进制都是无符号的。
在现实生活和计数器中,如果表示数字的“器件”只有两种状态,比如电灯的“开”和“关”,开关的“开”和“关”。一种状态表示数字0,另一种状态表示数字1,1加1应该等于2。因为没有数字2,所以只能在前一位输入一,即采用“全二进一”的原则,这与十进制中“全十进一”的原则一模一样。
1 1=10,10 1=11,11 1=100,100 1=101,
101 1=110,110 1=111,111 1=1000,……,
可见二进制10代表二,100代表四,1000代表八,10000代表十六,……。
二进制也是一种“价值体系”。同一个数字1用不同的数字表示不同的值。比如1111,从右向左数,第一个数字1是1,第二个数字1代表2,第三个数字1代表4,第四个数字1代表8,第五个数字1代表16。
所谓二进制,是计算机运算中使用的算法。二进制系统只由1和0组成。
举个例子,你在一年级的时候一定听说过“进位缸”(“数字缸”)!十进制是十根棍子扎成一捆,放入十位桶,十位桶扎成一大捆,放入一百位桶的制度.
二进制也是如此。当一个位柱上有两位时,一位到第十位,一位到第一百位。当一百位数有两位时,二进制是世界上计算机上使用的第一种算法。最老的电脑里都有灯泡,计算的时候,比如表达“一”,第一个灯泡就会亮。为了表示“二”,第一个灯泡熄灭,第二个灯泡亮起。
当二进制等于2时,需要进位。
0=00000000
1=00000001
2=00000010
3=00000011
4=00000100
5=00000101
6=00000110
7=00000111
8=00001000
9=00001001
10=00001010
……
即最基本的运算方式广泛采用二进制,计算机运算计算的基础就是基于二进制。只需用二进制执行操作,用其他二进制显示即可。
其实分隔二进制三元组是八进制,四进制是十六进制。
二进制和十进制的区别在于数字的个数和进位规律的巨大差异。顾名思义,二进制的计数法则是每二进一,是以2为基数的计数系统。数字10的意义和十进制完全不同。在十进制中,就是我们通常所说的十。在二进制系统中,其中一个含义可能是表示一个大小相当于十进制数2的数值。
我们可以把二进制数10表示为:10=1 2 1 0 2 0。
八进制的
八进制(基数为8)记数法在早期的计算机系统中非常常见,所以偶尔我们也能看到有人使用八进制记数法。八进制适用于12位和36位计算机系统(或其他多位数为3的计算机系统)。
八进制,缩写OCT或O,是一种计数方法,在八进制中使用0、1、2、3、4、5、6、7八个数字,开头必须以数字0开头。八进制数比九进制数更容易书写,所以它们经常用于计算机计算。
比如十进制32用八进制表示,即040,十进制9和27分别用八进制标记为011,十进制32用十进制表示,即3 8 1 2 8 0=26。
八进制数不能代表负数和小数。它们用来表示整数。
八进制(基数为8)记数法在早期的计算机系统中非常常见,所以偶尔我们也能看到有人使用八进制记数法。八进制适用于12位和36位计算机系统(或其他多位数为3的计算机系统)。但是对于两个幂的计算机系统(8位、16位、32位和64位计算机系统),八进制就不太好了。所以在过去的几十年里,八进制逐渐淡出。然而,仍然有一些编程语言提供了使用八进制符号来表示数字的能力,仍然有一些较老的Unix应用程序使用八进制。
十六进制的
英文名:十六进制数字系统,是计算机中数据的表示。它不同于我们日常生活中的十进制记数法。它由0-9和A-F组成,字母不区分大小写。与十进制的对应关系是:0-9对应0-9;A-F对应10-15;n元数可以用0-(n-1)的数字表示,超过9的可以用字母A-Z表示。
十进制的32用十六进制表示,即20。
十六进制20用十进制表示就是:2 16 0 16=32。
十进制数转换成十六进制数的方法是:十进制数的整数部分“除以16”,十进制数的小数部分“四舍五入16”。
比如说,十进制的0.1换算成八进制的0,40800.000000000005也就是0.1乘以8=0.8,如果小于1就不四舍五入,0.8乘以8=6.4,取整数6,0.4乘以8=3.2,取整数3,依次计算。
在编程中,我们通常使用十进制。毕竟C/C是一门高级语言。
例如:
int a=100,b=99
但由于数据是在计算机中表示的,最终以二进制的形式存在,所以有时候用二进制可以更直观地解决问题。但是二进制数太长了。例如,int类型占用4个字节和32位。例如,用int类型的二进制数表示的100将是:
0000
0000
0000
0000
0110
0100
面对这么长的数字,没有人会喜欢思考或者操作。所以C,C没有提供直接在代码中写二进制数的方法。这个问题可以用十六进制或者八进制来解决。因为,十进制越大,数的表达式长度就越短。但是,为什么是十六进制或者八进制,而不是别的,比如十进制9或者十进制20?2、8、16分别是2的1、3、4次方。这使得直接将三个碱基相互转换成为可能。八进制或十六进制缩短了二进制数,但保留了二进制数的表达特征。
使用十六进制的意义在于:
1计算机领域使用的一种重要的数字系统。
计算机理论的描述,计算机硬件电路的设计,都是非常有益的。比如在逻辑电路设计中,不仅要考虑功能的完备性,还要尽可能少的使用硬件。十六进制可以在一些理论分析中发挥作用。例如,四位二进制电路最多有十六种状态,即十六进制形式。只有这十六个状态都用了或者用了尽可能多,才能尽可能的利用硬件资源。
十六进制更短,因为一个十六进制数在转换中可以顶四个二进制数。
十六进制转换
1、二进制到十进制
方法:“重量总和”
例如:
规则:个位数的次数为0,第十位数的次数为1,依次递增,而十。
十分位数的度数是-1,百分位的度数是-2,依次递减。
注意:不是任何十进制小数都能转换成位数有限的二进制数。
2.十进制到二进制的转换
十进制整数到二进制数:“除以2得到余数,逆序排列”(除以2得到余数)
例如:
892 ……1
442 ……0
222 ……0
112 ……1
52 ……1
22 ……0
一个
十进制十进制数转二进制数:“乘2取整,按顺序排列”(乘2取整)
例如:
(0.625)10=(0.101)2
0.625X2=1.25 ……1
0.25 X2=0.50 ……0
0.50 X2=1.00 ……1
3.将二进制数转换为十六进制数:
二进制数转换成十六进制数时,只需从小数点开始,左右每四位数分成一组(不足四位数可加0),然后写出每组二进制数对应的十六进制数。
将十六进制数转换为二进制数:将每个十六进制数转换为4位二进制数,得到一个二进制数。
十六进制数字和二进制数字的对应关系如下:
0000 - 0 0100 - 4 1000 - 8 1100 - C
0001 - 1 0101 - 5 1001 - 9 1101 - D
0010 - 2 0110 - 6 1010 - A 1110 - E
0011 - 3 0111 - 7 1011 - B 1111 - F
例如:将十六进制数5DF.9转换为二进制数:
第五天第九天
0101 1101 1111 .1001
即(5DF.9)16=(10111011111.1001)2{十六进制怎么会有小数点}
例如:将二进制数1100001.111转换为十六进制数:
0110 0001 .1110
6 1 .E
即(1100001.111)2=(61。E)16
4.二进制数到八进制数的转换:从小数点开始,整部分左,小数部分右,每3位数为一组数,用一个八进制数表示。如果少于3位数,3位数要补“0”得到一个八进制数。
将八进制数转换为二进制数:将每个八进制数转换为3位二进制数,得到一个二进制数。
八进制数和二进制数的对应关系如下:
000 - 0 100 - 4
001 - 1 101 - 5
010 - 2 110 - 6
011 - 3 111 - 7
例如:将八进制37.416转换为二进制数:
3 7 .4 1 6
011 111 .100 001 110
即(37.416)8=(11111.10000111)2
例如:将二进制10110.0011转换为八进制:
0 1 0 1 1 0 .0 0 1 1 0 0
2 6 .1 4
即(10110.0011)2=(26.14)8
二进制和八进制的转换类似于二进制和十六进制的转换,只不过需要以三位数而不是四位数为一组进行运算。
二进制/八进制转换表
二进制
八进制的
000
0
001
一个
010
2
011
三
100
四
101
五
110
六
111
七
为了将二进制数转换成八进制数,只需将二进制串分成每三位一组(如有必要,用零填充前面),然后查表2-2,用相应的八进制数替换三位的位串。
5.八进制数被转换成十六进制数。
把八进制数转换成二进制再转换成十六进制就行了。
一种计数方法,在八进制数中使用八个数字,0,1,2,3,4,5,6,7,并且开头必须以数字0开始。八进制数比二进制数更容易书写,常用于计算机计算。
例如:
十进制的32表示为8,也就是:040。
十进制的9和27在八进制中分别记为011和033。
6、八进制到十进制:
将八进制数12.6转换为十进制数
(12.6)8=18^1 28^0 68^-1=(10.75)10
7、八进制转化为二进制:
按照顺序,每一个1位的八进制数都重写为等价的3位二进制数,顺序不变。
例如:(17.36)8=(001 111.011 110)2=(1111.0111)2
八进制到十六进制
先把八进制转换成二进制,再把二进制转换成十六进制。
例如:(712)8=(1110 0101 0)2=(1CA)16
8、十六进制到八进制:
首先,用1比4的方法将十六进制转换成二进制;然后用三合一的方法把二进制转换成八进制。
例如:(1CA)16=(111001010)2=(712)8
注意:小数点前的高0和小数点后的低0可以去掉。
9.抽取和八进制
方法:除以8得到余数。
示例:将十进制数115转换为八进制数。
8 115…… 3
8 14 …… 6
8 1 …… 1
结果:(115)10=(163)8
方法:首先采用十进制二进制方法,然后将二进制数转换为八进制数。
例如:(115)10=(1110011)2=(163)8
10.将十六进制转换成十进制。
十六进制是每16进1,但是我们从0到9只有十个数字,所以我们用A,B,C,D,E,F这六个字母分别代表10,11,12,13,14,15。字母不区分大小写。
十六进制数的第0位的权重是16的0次方,第1位的权重是16的1次方,第2位的权重是16的2次方.
所以在第n(n从0开始)位上,如果是,则数字X (X大于等于0,X小于等于15,即f)代表X16的n次方。
假设有一个十六进制数2AF5。
直接计算是:
5160 F161 A162 2163=10997
也可以垂直表达:
第0名:5160=5
第一名:f 16 1=240
第二名:A162=2560
第三名:2163=8192
-
10997
这里可以看出,所有十进制转换成十进制的关键在于它们的权重不同。
假设有人问你,十进制数1234为什么是1234?你可以给他这样一个公式:
1234=1103 2102 3101 4100
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。