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

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

1.1 计算机中的数制与编码

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

1.1.1 数制

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

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

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

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

a4c26d1e5885305701be709a3d33442f.png

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

式中Ki为基数“10”的第i次幂的系数,在二进制中可以是“0或1”;在十进制中可以是“0~9”;在十六进制中可以是“0~9,A~F”。

1.1.2 数制之间的转换

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

1.二进制转换为十进制

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

a4c26d1e5885305701be709a3d33442f.png

例如a4c26d1e5885305701be709a3d33442f.png

2.十进制转换为二进制

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

a4c26d1e5885305701be709a3d33442f.png

则(39)D=(100111)B。

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

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

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

例如 (11011011011010)B =

(0011 0110 1101 1010)B =

(36DA)H。

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

例如 (A 6F3)H = (1010

0110 1111 0011)B,因此可以说十六进制是二进制的缩写形式。

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

例如a4c26d1e5885305701be709a3d33442f.png

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。

a4c26d1e5885305701be709a3d33442f.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值