1、 计算机各进制简介一、二进制数二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。二进制数(binaries)是逢2进位的进位制,0、1是基本算符;计算机运算基础采用二进制。电脑的基础是二进制。在早期设计的常用的进制主要是十进制(因为我们有十个手指,所以十进制是比较合理的选择,用手指可以表示十个数字,0的概念直到很久以后才出现,所以是110而不是09)。电子计算机出现以后,使用电子管来表示十种状态过于复杂,所以所有的电子计算机中只有两种基本的状态,开和关。也就是说,电子管的两种状态决定了以电子管为基础的电子
2、计算机采用二进制来表示数字和数据。常用的进制还有8进制和16进制,在电脑科学中,经常会用到16进制,而十进制的使用非常少,这是因为16进制和二进制有天然的联系:4个二进制位可以表示从0到15的数字,这刚好是1个16进制位可以表示的数据,也就是说,将二进制转换成16进制只要每4位进行转换就可以了。二进制的“00101000”直接可以转换成16进制的“28”。字节是电脑中的基本存储单位,根据计算机字长的不同,字具有不同的位数,现代电脑的字长一般是32位的,也就是说,一个字的位数是32。字节是8位的数据单元,一个字节可以表示0255的十进制数据。对于32位字长的现代电脑,一个字等于4个字节,对于早期
3、的16位的电脑,一个字等于2个字节。特性1、如果一个二进制数(整型)数的第零位的值是1,那么这个数就是奇数;而如果该二进制数位是0,那么这个数就是偶数。2、如果一个二进制数的低端n位都是零,那么这个数可以被个数等于2n。4、如果一个二进制数的第零位到第n - 1位都是1,而且其他各位2n整除。3、如果一个二进制数的第n位是一,而其他各位都是零,那么这都是0,那么这个数等于2n - 1。5、将一个二进制数的所有位左移移位的结果是将该数乘以二。6、将一个无符号二进制数的所有位右移一位的结果等效于该数除以二(这对有符号数不适用)。余数会被下舍入(rounddown)7、将两个n位的二进制数相乘可能会
4、需要2*n位来保存结果。8、将两个n位的二进制数相加或者相减绝不会需要多于n 1位来保存结果。9、将一个二进制数的所有位取反(就是将所有的一改为零,所有的零改为一)等效于将该数取负(改变符号)再将结果减一。10、将任意给定个数的位表示的最大无符号二进制数加一的结果永远是零。11、零递减(减一)的结果永远是某个给定个数的位表示的最大无符号二进制数。12、n位可以表示2n个不同的组合。13、数2年包含n位,所有位都是一。运算二进制数的运算除了有四则运算外,还可以有逻辑运算。二进制数下面分别予以介绍。二进制数的四则运算二进制数与十进制数一样,同样可以进行加、减、乘、除四则运算。其算法规则如下:加运算
5、:0 0=0,0 1=1,1 0=1,1 1=10,#逢2进1;减运算:1-1=0,1-0=1,0-0=0,0-1=1,#向高位借1当2;乘运算:00=0,01=0,10=0,11=1,#只有同时为“1”时结果才为“1”;除运算:二进制数只有两个数(0,1),因此它的商是1或0。加法0+0=0,0+1=1+0=1,1+1=10减法00=0,10=1,11=0,01=-1,10100-1010=1010乘法00=0,01=10=0,11=1除法01=0,11=1只有0和1两个数码,基数为二。加法如下:(1)首先是最右数码位相加。这里加数和被加数的最后一位分别为“0”和“1”,根据加法原则可以知道
6、,相加后为“1”。(2)再进行倒数第二位相加。这里加数和被加数的倒数第二位都为“1”,根据加法原则可以知道,相加后为“(10)2”,此时把后面的“0”留下,而把第一位的“1”向高一位进“1”。(3)再进行倒数第三位相加。这里加数和被加数的倒数第二位都为“0”,根据加法原则可以知道,本来结果应为“0”,但倒数第二位已向这位进“1”了,相当于要加“被加数”、“加数”和“进位”这三个数的这个数码位,所以结果应为0 1=1。(4)最后最高位相加。这里加数和被加数的最高位都为“1”,根据加法原则可以知道,相加后为“(10)2”。一位只能有一个数字,所以需要再向前进“1”,本身位留下“0”,这样该位相加后
7、就得到“0”,而新的最高位为“1减法(1)首先最后一位向倒数第二位借“1”,相当于得到了(10)2,也就是相当于十进制数中的2,用2减去1得1。(2)再计算倒数第二位,因为该位同样为“0”,不及减数“1”大,需要继续向倒数第三位借“1”(同样是借“1”当“2”),但因为它在上一步中已借给了最后一位“1”(此时是真实的“1”),则倒数第二位为1,与减数“1”相减后得到“0”。(3)用同样的方法倒数第三位要向它们的上一位借“1”(同样是当“2”),但同样已向它的下一位(倒数第二位)借给“1”(此时也是真实的“1”),所以最终得值也为“0”。(4)被减数的倒数第四位尽管与前面的几位一样,也为“0”,
8、但它所对应的减数倒数第四位却为“0”,而不是前面几位中对应的“1”,它向它的高位(倒数第五位)借“1”(相当于“2”)后,在借给了倒数第四位“1”(真实的“1”)后,仍有“1”余,1 0=1,所以该位结果为“1”。(5)被减数的倒数第五位原来为“1”,但它借给了倒数第四位,所以最后为“0”,而此时减数的倒数第五位却为“1”,这样被减数需要继续向它的高位(倒数第六位)借“1”(相当于“2”),21=1。(6)被减数的最后一位本来为“1”,可是借给倒数第五位后就为“0”了,而减数没有这个位,这样结果也就是被减数的相应位值大小,此处为“0”。在二进制数的加、减法运算中一定要联系上十进制数的加、减法运
9、算方法,其实它们的道理是一样的,也是一一对应的。在十进制数的加法中,进“1”仍就当“1”,在二进制数中也是进“1”当“1”。在十进制数减法中我们向高位借“1”当“10”,在二进制数中就是借“1”当“2”。而被借的数仍然只是减少了“1”,这与十进制数一样。乘法把二进制数中的“0”和“1”全部当成是十进制数中的“0”和“1”即可。根据十进制数中的乘法运算知道,任何数与“0”相乘所得的积均为“0”,这一点同样适用于二进制数的乘法运算。只有“1”与“1”相乘才等于“1”。乘法运算步骤:(1)首先是乘数的最低位与被乘数的所有位相乘,因为乘数的最低位为“0”,根据以上原则可以得出,它与被乘数(1110)2
10、的所有位相乘后的结果都为“0”。(2)再是乘数的倒数第二位与被乘数的所有位相乘,因为乘数的这一位为“1”,根据以上原则可以得出,它与被乘数(1110)2的高三位相乘后的结果都为“1”,而于最低位相乘后的结果为“0”。(3)再是乘数的倒数第三位与被乘数的所有位相乘,同样因为乘数的这一位为“1”,处理方法与结果都与上一步的倒数第二位一样,不再赘述。(4)最后是乘数的最高位与被乘数的所有位相乘,因为乘数的这一位为“0”,所以与被乘数(1110)2的所有位相乘后的结果都为“0”。(5)然后再按照前面介绍的二进制数加法原则对以上四步所得的结果按位相加(与十进制数的乘法运算方法一样),结果得到(1110)
11、2(0110)2=(1010100)2。除法(1)首先用“1”作为商试一下,相当于用“1”乘以除数“110”,然后把所得到的各位再与被除数的前4位“1001”相减。按照减法运算规则可以得到的余数为“011”。(2)因为“011”与除数“110”相比,不足以被除,所以需要向低取一位,最终得到“0111”,此时的数就比除数“110”大了,可以继续除了。同样用“1”作为商去除,相当于用“1”去乘除数“110”,然后把所得的积与被除数中当前四位“0111”相减。根据以上介绍的减法运算规则可以得到此步的余数为“1”。(3)因为“1”要远比除数“110”小,被除数向前取一位后为“11”,仍不够“110”除
12、,所以此时需在商位置上用“0”作为商了。(4)然后在被除数上继续向前取一位,得到“110”。此时恰好与除数“110”完全一样,结果当然是用“1”作为商,用它乘以除数“110”后再与被除数相减,得到的余数正好为“0”。证明这两个数能够整除。这样一来,所得的商(1101)2就是两者相除的结果。ASCII码ASCII码就是被普遍采用的一个英文字符信息编码方案,它用8二进制数位二进制数表示各种字母和符号,例如:01000001表示A 01000010表示B8个二进制位称为一个字节(Byte,代号为B)。字节是最基本的信息储存单位,一个字节可以储存一个英文字母或符号编码,两个字节可以储存一个汉字编码。同
13、二进制数一样,二进制编码也是计算机内部用来表示信息的一种手段,人们平时和计算机打交道时,根本不用理它。我们仍然用人们习惯的方式输入或者输出信息,期间的转换则由计算机自动去完成。计算机中一个存储单位(即一个字节)里存放的究竟是二进制数还是二进制编码?是英文是汉字?事实上它们都由程序进行识别。例如,表示英文字符的8位二进制编码的最高位是0,而表示汉字两个8位二进制编码的最高位是1,这一点就是程序区别存储单位里存放的是英文还是汉字的一个依据。汉字编码1980年中国为6763个常用汉字规定了编码,称为信息交换用汉字编码字符集基本集,简称GB2312-80,每个汉字占16位。在Windows95/98/
14、2000/XP简体中文版操作系统中,使用的是汉字内码扩展规范,简称GBK,每个汉字占16位,它能表示20902个汉字。Linux简体中文版操作系统中,使用的是UTF-8编码,大多数汉字占24位,能表示7万多个汉字。实例对照十进制数二进制数(注:十进制数只有0到9)十进制0123456789二进制0000000100100011010001010110011110001001161000046101110991100011888110111100076541110111100110注:一般为了区别二进制数与十进制数,再二进制数后加上一个“B”,如14510010001B通常我们所说的数字,一般都
15、是十进制,10分就1角,10角就1元这些数字只是由十个数组成,那就是:0、1、2、3、4、5、6、7、8、9我们一般称之为基数(base)都是这些数,但它们处于不同位置所代表的重量就不一样了哦,如111,都是1但就是不一样,这就涉及到了位权的概念了,可用以下实例来说明。一个十进制数结4553.87可表示为:在这个数中,有些相同的数字由于处在不同的位置,它们代表的数值的大小也不同,各位数字所代表的数值的大小是由位权来决定的。位权是一个乘方值,乘方的底数为进位计数制的基数(本例中为1 0 ),而指数由各位数字在数中的位置来决定。以上的十进制数中,从左至右各位数字的位权分别为:10、10、10、10
16、、。一般而言,在进位制中,把一个数中各位数字为1时代表的数值大小称为位权。如456它们的位权就是当各位为1时的数值大小,456中的4的位权就是10(2),5的位权就是10(1),6的位权就是10(0).二进制数除了位权对于进制记数的另一个重要概念就是基数,基数很好理解,就是进位计数制中所使用的不同基本符号的个数称为该计数制的基数,比如十进制就是1.2.3.4.5.6.7.8.9.0这十个数,相对而言二进制就两个基数:0和1,八进制就是:0.1.2.3.4.5.6.7,十六进制就是:0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F由上面两个概念可以得出以下公式:以下将详细说名N进制
17、的基数就能表示为:0、1、2、N-2、N-1N进制的权一般可以表示:X就是某数在它的数列中所处位置N进制展开成十进制公试:如十进制:有10个基数:0、1、2、3、4、5、6、7、8、9,逢十进一二进制:有2 个基数:0、1,逢二进一八进制:有8个基数:0、1、2、3、4、5、6、7,逢八进一十六进制:有16个基数:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,逢十六进一由于大家从小开始就学习十进制,生活中用途更是广泛,一种单一的数字思维模式使我们很多人以为就只有这么一种进制数.在以下给大家说说计算机中用得最多的进制数,让大家开阔思维,不要停留于一成不变的思维模式中。计算机中用
18、得最多也是CPU唯一能认出的数制,那就是二进制。计算机是处理信息的机器,信息处理的前提是信息的表示。计算机内信息的表示形式是二进制数字编码。也就是说,各种类型的信息(数值、文字、声音、图像)必须转换成数字量即二进制数字编码的形式,才能在计算机中进行处理。那怕你移动一下鼠标,按一下键盘,你的每一个动作最后到了CPU那也就只剩0和1了,有时觉得设计计算机的人也太厉害了,就两个数字就能弄出这么完美的东西来,这就是智慧的结晶,其实说到底了CPU也就几百条指令而已,在软件和系统的层层迭加下让我们根本就不了解计算机内部是什么样?其实没什么,就是0和1两个状态而已。采用原因容易表示二进制数只有“0”和“1”
19、两个基本符号,易于用两种对立的物理状态表示。例如,可用1表示电灯开关的“闭合”状态,用“0”表示“断开”状态;晶体管的导通表示“1”, 截止表示“0”;电容器的充电和放电、电脉冲的有和无、脉冲极性的正与负、电位的高与低等一切有两种对立稳定状态的器件都可以表示二进制的“0”和“1”。而十进制数有10个基本符号(0、1、2、3、4、5、6、7、8、9),要用10种状态才能表示,要用电子器件实现起来是很困难的。运算简单二进制数的算术运算特别简单,加法和乘法仅各有3条运算规则( 0+0=0,0+1=1,1+1=10和00=0,01=0,11=1 ),运算时不易出错。其实计算机处理算术运算时都是加法和移
20、位,并没有乘除法,如11B左移一位就成了110B,11B是十进制的3,而110B是6,看看是不是等于乘二,左移乘,右移就除,哈哈,好玩吧此外,二进制数的“1”和“0”正好可与逻辑值“真”和“假”相对应,这样就为计算机进行逻辑运算提供了方便。算术运算和逻辑运算是计算机的基本运算,采用二进制可以简单方便地进行这两类运算。进制转换虽然二进制有不少优点,但毕竟我们日常生活中用的都是十进制。为了能在日常生活中使用,就有必要把它转换为十进制。至于为什么用八进制和十六进制呢?很简单,就是因为它是2的乘方,2=8,2=16,这样一来就便于二进制的计算和阅读。对于其它进制转换为十进制比较简单,下面举例说明:在计
21、算机科学中,二进制、八进制、十进制、十六进制有简写,这样是为了不混淆。十进制一般在末尾加个字母D一般习惯都不加,二进制加个B,八进制加Q,十六进制加H。例如:123D、1011B、123Q、AB9H、0.11D、0.11B、0.11Q、0.11H。二进制数而十进制转换为其它进制就比较难办了哦,但方法是有的,而且不少方法。在此介绍一种比较常用的,便于大家掌握。十进制转换为二进制技巧只能举例了,文字说不清的,通常将一个十进制数的整数部分和小数部分分开处理。1、整数的数制转换采用“基数除法”,具体步骤如下:(1)将给定的十进制整数除以基数2,余数便是等值的二进制的最低位。(2)将上一步的商再除以基数
22、2,余数便是等值的二进制数的次低位。(3)重复步骤2,直到最后所得的商等于0为止。各次除得的余数,便是二进制各位的数,最后一次的余数是最高位二进制与八进制十六进制转换技巧二进制从最低位开始每三位转换为十进制即为其对应八进制。高位不足三位,补零。同理二进制从最低位开始每四位转换为十进制即为其对应十六进制。高位不足四位,补零。例如 1001100 = 114 = 4C二、八进制数符号8和9不用在八进制系统中。在oct 7后跳到oct 10。现在似乎有些混乱,但oct 10实际与dec 8相等,oct 11表示的是dec 9。数oct 31能转换为bin 011001,然后转换为十进制。简介Oct0
23、1234567Bin000001010011100101110111按八进制记数的数。在八进制数中,每一位用07八个数码表示,所以它的计数基数为8。低位数和高一位数之间的关系是逢八进一。十进制数、二进制数、八进制数之间存在一定的对应关系。同样一个数用八进制写出的结果要比用二进制写出的结果简单得多。用法符号8和9不用在八进制系统中。在oct 7后跳到oct 10。现在似乎有些混乱,但oct 10实际与dec 8相等,oct 11表示的是dec 9。见上表,数oct 31能转换为bin 011001,然后转换为十进制。bin 011001=(025)+(124)+(123)+(022)+(021)
24、+(120)=dec 25按八进制记数的数。在八进制数中,每一位用07八个数码表示,所以它的计数基数为8。低位数和高一位数之间的关系是逢八进一。十进制、二进制、八进制之间存在一定的对应关系。同样一个数用八进制写出的结果要比用二进制写出的结果简单得多。十进制数与八进制数的转换(96)10=(140)8(85)10=(125)8算法:除八取余96 012 41倒序排列14085 510 21倒序排列125八进制数与二进制数的转换(76)8=(111110)2一位换三位(7)8=(111)2(6)8=(110)2(5)8=(101)2(4)8=(100)2(3)8=(011)2(2)8=(010)2
25、(1)8=(001)2十进制数编辑本词条由“科普中国”百科科学词条编写与应用工作项目审核 。十进制数是组成以10为基础的数字系统,有0,1,2,3, 4, 5, 6, 7, 8, 9十个基本数字组成。十进制,英文名称为Decimal System,来源于希腊文Decem,意为十。十进制计数是由印度教教徒在1500年前发明的,由阿拉伯人传承至11世纪。十进制发展十进制在中国首先,人们日常生活中所不可或离的十进位值制,就是中国的一大发明。至迟在商代时,中国已采用了十进位值制。从现已发现的商代陶文和甲骨文中,可以看到当时已能够用一、二、三、四、五、六、七、八、九、十、百、千、万等十三个数字,记十万以
26、内的任何自然数。这些记数文字的形状,在后世虽有所变化而成为当今的写法,但记数方法却从没有中断,一直被沿袭,并日趋完善。十进位值制的记数法是古代世界中最先进、科学的记数法,对世界科学和文化的发展有着不可估量的作用。正如李约瑟所说的:“如果没有这种十进位制,就不可能出现我们现在这个统一化的世界了。”十进制在国外古巴比仑的记数法虽有位值制的意义,但它采用的是六十进位的,计算非常繁琐。古埃及的数字从一到十只有两个数字符号,从一百到一千万有四个数字符号,而且这些符号都是象形的,如用一只鸟表示十万。古希腊由于几何发达,因而轻视计算,记数方法落后,是用全部希腊字母来表示一到一万的数字,字母不够就用加符号“”
27、等的方法来补充。古罗马采用的是累积法,如用ccc表示300。印度古代既有用字母表示,又有用累积法,到公元七世纪时方采用十进位值制,很可能受到中国的影响。现通用的印度阿拉伯数码和记数法,大约在十世纪时才传到欧洲。1十进制介绍十进制的发展在计算数学方面,中国大约在商周时期已经有了四则运算,到春秋战国时期整数和分数的四则运算已相当完备。其中,出现于春秋时期的正整数乘法歌诀“九九歌”,堪称是先进的十进位记数法与简明的中国语言文字相结合之结晶,这是任何其它记数法和语言文字所无法产生的。从此,“九九歌”成为数学的普及和发展最基本的基础之一,一直延续至今。其变化只是古代的“九九歌”从“九九八十一”开始,到“
28、二二如四”止,而是由“一一如一”到“九九八十一”。十进制的使用卜辞中记载说,商代的人们已经学会用一、二、三、四、五、六、七、八、九、十、百、千、万这13个单字记十万以内的任何数字,但是现在能够证实的当时最大的数字是三万。甲骨卜辞中还有奇数、偶数和倍数的概念。十进位位值制记数法包括十进位和位值制两条原则,十进即满十进一;位值则是同一个数位在不同的位置上所表示的数值也就不同,如三位数111,右边的1在个位上表示1个一,中间的1在十位上就表示1个十,左边的1在百位上则表示1个百。这样,就使极为困难的整数表示和演算变得如此简便易行,以至于人们往往忽略它对数学发展所起的关键作用。我们有个成语叫屈指可数,
29、说明古代人数数确实是离不开手指的,而一般人的手指恰好有十个。因此十进制的使用似乎应该是极其自然的事。但实际情况并不尽然。在文明古国巴比伦使用的是60进位制(这一进位制到今仍留有痕迹,如一分=60秒等)另外还有采用二十进位制的。古代埃及倒是很早就用10进位制,但他们却不知道位值制。所谓位值制就是一个数码表示什么数,要看它所在的位置而定。位值制是千百年来人类智慧的结晶。零是位值制记数法的精要所在。但它的出现却并非易事。我国是最早使用十进制记数法,且认识到进位制的国家。我们的口语或文字表达的数字也遵守这一原则,比如一百二十七。同时我们对0的认识最早。十进制是中国人民的一项杰出创造,在世界数学史上有重
30、要意义。著名的英国科学史学家李约瑟教授曾对中国商代记数法予以很高的评价,如果没有这种十进制,就几乎不可能出现我们现在这个统一化的世界了,李约瑟说总的说来,商代的数字系统比同一时代的古巴比伦和古埃及更为先进更为科学。使用原则十进制基于位进制和十进位两条原则,即所有的数字都用10个基本的符号表示,满十进一,同时同一个符号在不同位置上所表示的数值不同,符号的位置非常重要。基本符号是0到9十个数字。要表示这十个数的10倍,就将这些数字右移一位,用0补上空位,即10,20,30,.,90;要表示这十个数的10倍,就继续左移数字的位置,即100,200,300,.。要表示一个数的1/10,就右移这个数的位
31、置,需要时就0补上空位:1/10位0.1,1/100为0.01,1/1000为0.001。2十六进制数十六进制(hexadecimal)是计算机中数据的一种表示方法。它的规则是“逢十六进一”。机制进位制/位置计数法是一种记数方式,故亦称进位记数法/位值计数法,可以用有限的数字符号代表所有的数值。可使用数字符号的数目称为基数(en:radix)或底数,基数为n,即可称n进位制,简称n进制。现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数。对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可
32、以用八进制表示为71(8)、用十六进制表示为39(16),它们所代表的数值都是一样的。数制也称计数制,是指用一组固定的符号和统一的规则来表示数值的方法。计算机是信息处理的工具,任何信息必须转换成二进制形式数据后才能由计算机进行处理,存储和传输。特点十六进制数具有下列两个特点:英文字母A,B,C,D,E,F分别表示数字1015。计数到F后,再增加1个,就进位。十六进制数是计算机常用的一种计数方法,它可以弥补二进制数书写位数过长的不足,也用于电视机中。十六进制数的表示方式为0x开头。示例:0xAF=175运算原理十六进制(hexadecimal)是计算机中数据的一种表示方法。同我们日常中的十进制表
33、示法不一样。十六进制数的基数是16,采用的数码是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A-F分别表示十进制数字10-15.十六进制数的技术规则是“逢十六进一”,它的各位的权是以16的N次方标识的。通常,对十六进制数的表示,可以在数字的右下角标注16或H,但在C语言中是在数的前面加数字0和字母X即0X来表示。例如,12AF在C语言中表示为0X12AF。十六进制数的加减法的进/借位规则为:借一当十六,逢十六进一。 十六进制数同二进制数及十进制数一样,也可以写成展开式的形式。二进制数到十六进制数的转换从小数点开始,分别向左、右按4位分组转换成对应的十六进制数字字符,最后不满4位的,则需补0。十六进制数到二进制数的转换将每位十六进制数用4位二进制表示即可。