进制
2016-07-15 16:24
155 查看
什么是进制
进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。进位制/位置计数法是一种记数方式,故亦称进位记数法/位值计数法,可以用有限的数字符号代表所有的数值。可使用数字符号的数目称为基数(en:radix)或底数,基数为n,即可称n进位制,简称n进制。现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数。
对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可以用八进制表示为71(8)、用十六进制表示为39(16),它们所代表的数值都是一样的。
常用进制
常用进制有二进制、八进制、十进制、十六进制等,在计算机中的数据均采用二进制数表示。我们生活中常见的是十进制。二进制表示
二进制数有两个特点:它由两个基本数字0,1组成,二进制数运算规律是逢二进一。为区别于其它进制数,二进制数的书写通常在数的右下方注上基数2,或加后面加B表示。
例如:二进制数10110011可以写成(10110011)2,或写成10110011B
二进制加法和乘法
二进制的运算与十进制类似,只不过十进制是逢10进1,而二进制则是逢2进1。二进制加法运算
0+0=00+1=1
1+0=1
1+1=10
二进制乘法运算
0×0=00×1=0
1×0=0
1×1=1
八进制
由于二进制数据的基R较小,所以二进制数据的书写和阅读不方便,为此,在小型机中引入了八进制。八进制的基R=8=2^3,有数码0、1、2、3、4、5、6、7,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。八进制用下标8或数据后面加O表示 例如:二进制数据 ( 11 101 010 . 010 110 100 )2 对应 八进制数据 ( 3 5 2 . 2 6 4 )8或352.264O.十进制
人们通常使用的是十进制。它的特点有两个:有0,1,2….9十个基本数字组成,十进制数运算是按“逢十进一”的规则进行的.十六进制
由于二进制数在使用中位数太长,不容易记忆,所以又提出了十六进制数十六进制数有两个基本特点:
1.它由十六个字符0~9以及A,B,C,D,E,F组成(它们分别表示十进制数10~15)。
2.十六进制数运算规律是逢十六进一,即基R=16=2^4,通常在表示时用尾部标志H或下标16以示区别。
例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H。
位全概念
数制中每一固定位置对应的单位值称为位权。对于形式化的进制表示,我们可以从0开始,对数字的各个数位进行编号,即个位起往左依次为编号0,1,2,……;对称的,从小数点后的数位则是-1,-2,……
对于多位数,处在某一位上的“1”所表示的数值的大小,称为该位的位权。例如十进制第2位的位权为10,第3位的位权为100;而二进制第2位的位权为2,第3位的位权为4,对于 N进制数,整数部分第 i位的位权为N^(i-1),而小数部分第j位的位权为N^-j。
某进制计数制中各位数字符号所表示的数值表示该数字符号值乘以一个与数字符号有关的常数,该常数称为 “位权 ” 。位权的大小是以基数为底,数字符号所处的位置的序号为指数的整数次幂。
十进制数的百位、十位、个位、十分位的权分别是10的2次方、10的1次方、10的0次方,10的-1次方。二进制数就是2的n次幂。
进制转换
二进制转十进制
要从右到左用二进制的每个数去乘以2的相应次方例如:二进制数1101.01转化成十进制
1101.01(2)=1*2^0+0*2^1+1*2^2+1*2^3 +0*2^-1+1*2^-2=1+0+4+8+0+0.25=13.25
所以总结起来通用公式为:
abcd.efg(2)=d*2^0+c*2^1+b*2^2+a*2^3+e*2^-1+f*2^-2+g*2^-3
或者用下面这种方法:
把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为”按权相加”法。
二进制数1000110转成十进制数可以看作这样:
数字中共有三个1 即第二位一个,第三位一个,第七位一个,然后对应十进制数即2的1次方+2的2次方+2的6次方, 即
1000110=64+0+0+0+4+2+0=70
十进制转二进制
十进制整数转换为二进制整数采用”除2取余,逆序排列”法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。十进制整数转二进制
如:255=(11111111)B
255/2=127=====余1
127/2=63======余1
63/2=31=======余1
31/2=15=======余1
15/2=7========余1
7/2=3=========余1
3/2=1=========余1
1/2=0=========余1
789=1100010101
二进制数与十六进制数之间的转换
由于4位二进制数恰好有16个组合状态,即1位十六进制数与4位二进制数是一一对应的.所以,十六进制数与二进制数的转换是十分简单的.(1)十六进制数转换成二进制数,只要将每一位十六进制数用对应的4位二进制数替代即可――简称位分四位.
例:将(4AF8B)16转换为二进制数.
解: 4 A F 8 B
0100 1010 1111 1000 1011
所以(4AF8B)16=(1001010111110001011)2
(2)二进制数转换为十六进制数,分别向左,向右每四位一组,依次写出每组4位二进制数所对应的十六进制数――简称四位合一位.
例:将二进制数(000111010110)2转换为十六进制数.
解: 0001 1101 0110
1 D 6
所以(111010110)2=(1D6)16
转换时注意最后一组不足4位时必须加0补齐4位
and、or、xor运算
所有进制的and(和)、or(或)、xor(异或)运算都要转化为二进制进行运算,然后对齐位数,进行运算,具体的运算方法和普通的and、or、xor相同,如:
1and1=1,1and0=0,0and0=0,
1or1=1,1or0=1,0or0=0,
1xor1=0,1xor0=1,0xor0=0。
就是一般的二进制运算。
如:35(H)and5(O)=110101(B)and 101(B)=101(B)=5(O)
以上内容摘录百度百科。
相关文章推荐
- C#进制之间的相互转换详解
- mysql binlog二进制日志详解
- C语言中进制知识汇总
- C语言进制转换代码分享
- 详解C++编程中对二进制文件的读写操作
- 整理C# 二进制,十进制,十六进制 互转
- PHP中实现中文字符进制转换原理分析
- php 实现进制相互转换
- 在ASP.NET 2.0中操作数据之五十四:添加新记录时包含一个文件上传选项
- c#二进制逆序方法详解
- JS幻想 读取二进制文件第1/2页
- 使用jscript实现二进制读写脚本代码
- C#中图片、二进制与字符串的相互转换方法
- JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
- C#二进制序列化实例分析
- JavaScript前端开发之实现二进制读写操作
- php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
- PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
- javascript 二进制运算技巧解析
- javascript parseInt() 函数的进制转换注意细节