加载中…

加载中...

正文 字体大小:

DIY计算机必须掌握的知识点(1)——数制与编码

(2009-04-11 23:30:40)
标签:

数制

二进制

十六进制

basic语言

博主

阿拉伯

教育

第一章   计算机逻辑电路基础

 

1.1  计算机中的数制与编码

 

    一方面我们赞叹计算机的运算能力是多么强大,能处理多么复杂的数学计算;而另一方面我们又说计算机的智商是多么的低下,因为它只认识2个数:0和1。这样初学者往往会产生疑惑:用0和1怎样表示复杂的数字及怎样进行运算?

 

1.1.1 数制

    十进制我们在各种数学计算中所用的传统的数制,它用十个阿拉伯符号“0~9”来表示数字“零~九”,大于“九”的数就不能用一位来表示了,必须进位,如它用“10”来表示“十”,用“100”表示“一百”,因此它的进位特点是:逢十进一。

    二进制是计算机中所用的数制,它用两个阿拉伯符号“0和1”来表示数字“零和一”,大于“一”的数就不能用一位来表示了,必须进位,则它用“10”来表示“二”,用“100”表示“四”,因此它的进位特点是:逢二进一。

    十六进制用十个阿拉伯符号和六个英文字母“0~9,A~F”来表示数字“零~十五”,大于“十五”的数据必须进位,则用“10”表示“十六”,用“100”表示“二百五十六”,因此它的进位特点是:逢十六进一。   

    任意一个数都可以用以上三种数制中的任一种来表示,一般地说,无论采用任种数制,任何一个数都可表示为:

DIY计算机必须掌握的知识点(1)——数制与编码

   

    在不同的数制中,式中基数“10”所表示的数值是不同的,在二进制中表示“二”;在十进制中表示“十”;在十六进制中表示“十六”。

    式中Ki为基数“10”的第i次幂的系数,在二进制中可以是“01”;在十进制中可以是“09”;在十六进制中可以是“09AF”。

 

1.1.2 数制之间的转换

    我们来规定一下以后的论述中数制的表示方法,用括号后的下标D、B和H分别表示十、二和十六进制数。例如(268)D表示十进制数;(1011001)B表示二进制数;(A8C7)H表示十六进制数。

    1.二进制转换为十进制

    可以先将二进制数按式2.1展开,然后将基数“10”换成十进制数“2”,再按十进制计算得到十进制数。

DIY计算机必须掌握的知识点(1)——数制与编码 

    例如DIY计算机必须掌握的知识点(1)——数制与编码

    2.十进制转换为二进制

    可以将十进制数分为整数和小数两个部分。将整数部分不断地除以2,把所得余数(只有01)按顺序从低(位0开始)到高位进行排列,直至商为0,所排列的余数即为所求二进制整数。例如(39)D转换为

    DIY计算机必须掌握的知识点(1)——数制与编码

    则(39)D=(100111)B。

    将十进制数的小数部分不断地乘以2,把所得乘积的整数部分(只有01)取出按顺序从高(位-1开始)到低位进行排列,直至误差满足要求。

    3.二进制和十六进制之间的转换   

    由于1624次幂,每4位二进制数对应1位十六进制数,因此它们之间的转换十分简单。将二进制整数部分从最低位开始每4位一组,不足4位的高位补0,然后将每组直接转换为十六进制即可

    例如 (11011011011010)B = (0011 0110 1101 1010)B = (36DA)H

    十六进制数向二进制数的转换也十分简单,只要将十六进制数的每一位直接转换为二进制数即可。

    例如 (A 6F3)H = (1010 0110 1111 0011)B,因此可以说十六进制是二进制的缩写形式。

    十六进制与十进制之间的转换可以参考二进制与十进制的转换。如十六进制转换为十进制,只要将“2”换成“16”,且将系数转换为十进制,再按十进制计算即可。

    例如DIY计算机必须掌握的知识点(1)——数制与编码 

 

1.1.3 计算机的数据单位

    在计算机中,常用的数据单位有位、字节、半字和字,微处理器根据位数的不同支持8位字节、16位半字或32位字的数据类型。

    (1)位(bit):它是一个二进制数的位,位是是计算机数据的最小单位,一个位只有0和1 两种状态(21)。为了表示更多的信息,就必须将更多位组合起来使用,比如两位就有00、01、10、11四种状态(22),以此类推。

    (2)字节(Byte): 通常将8位二进制作为一个字节,即1B=8bit,那么一个字节就可以表示0-255种状态或一个字节或十六进制数的0-FF之间的数,8位微处理器的数据是以字节方式存储的。

    (3)半字:从偶数地址开始连续的2个字节构成一个半字,半字的数据类型为2个连续的字节,有些32位微处理器的数据是以半字方式存储的,比如32位ARM微处理器支持的Thumb指令的长度就刚好是一个半字。

    (4):以能被4整除的地址开始的连续的4个字节构成1个字,字的数据类型为4个连续的字节,32位微处理器的数据全部支持以字方式存储的格式,比如32位ARM微处理器支持的ARM指令的长度就刚好是一个字。

 

1.1.4 二进制的算术运算

   1. 加法运算

   计算机中有加法器,两个二进制数可以直接相加,加法规则是:

    0+0=0,0+1=1,1+1=10

    例如两个8位二进制数相加10010011 + 10101001=10111100,向高位的进位为1。

   2. 减法运算

    计算机中无减法,减法也是通过加法器完成的,这里引入补码的概念,可以举一个例子说明一下,指针式钟表,假设要将时钟从5点拨到2点,有2种拨发,一种是逆时钟拨3个时格,相当于5减3等于2;另一个拨发是顺时针拨9个时格,相当于5加9等于2,这样以来可以说对时钟这种模式为12计数制来说,9和3互补,9是3的补码,反之依然。对于刚才时钟拔法我们可以写出如下算式:
                     5-3 = 5-(12-9) = 5+9-12 = 2
    一个n位二进制数原码N,它的补码可定义为 (N)补=2n-N。
    补码的概念是为了方便计算机做减法运算方便而引入的,因此二进制正数不用关心它的补码;而二进制负数的补码,为它的原码按位取反加1。
    例如,8位二进制数 (-1)补= (11111110 + 1)B = (11111111)B。
    在计算机中负数是用它的补码来表示的。用补码做减法运算很方便,我们说数A减去数B等于数A加上数B的补码,且要舍去进位。
    例如,计算8位二进制数减法
   (58-39)D=(00111010-00100111)B=(00111010+11011001)B=(00010011)B=(19)D。

    DIY计算机必须掌握的知识点(1)——数制与编码

0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有