Hello,大家好,我是小唐。很高兴再次和大家见面。今天带来的内容是来自一线测试工程关于软件测试基础能力必备的知识“补码计数法、余码计数法和浮点数计数法”。这一部分知识是对计算机数据存储、和二进制的进一步理解。且听小唐满满给你道来,希望阅读完本篇文章能够对你理解计算机存储知识和二进制有着一丝帮助。
大家也许知道,对于计算机的产生背景来自于数字电路理论的发展。在数字电路中,通常使用一系列高低电平来表示一些数据。对于计算机的由来,最初也是为了方便人们对数据进行计算。既然,计算机要对数据进行计算,那么它就得具备数据存储的功能。在计算机发展的历史中,人们寻找了很多种针对计算机数据存储的实现方案。最成功的方案便是和数字电路存储数据一样,采用高低电平来进行存储,毕竟计算机电路也是基于数字电路发展起来的。
计算机数据存储的基本思想是“使用计算机电路电平来进行存储”。因为电平的物理态只有两种“要么是高电平、要么是低电平”。高低电平状态的切换可以用两个值来表示,于是基于数字电路的理论,人们把计算机电路高低电平用两个符号来表示即“0表示低电平,1表示高电平”。二进制由此诞生。
一个计算机中有着上亿万的电路。一个电路能够存储一个电平符号也就是一个二进制值。因此一个计算机可以存储大量的二进制值,而这个二进制值就是计算机数据存储的源头。
在计算机中,可以用不同个数的二进制位来存储不同大小的数据。当然,使用的二进制位越多计算机所能存储的数据也就越大。通常我们说的8位存储、32位存储、64位存储、128位存储或256位存储,它们分别存储的数据大小都是不一样的。
在计算机中,数据存储在一个叫做主存储器的计算机部件内。计算机进行运算的过程就是在主存储器中读取数据和存入数据的过程。
主存储器中,有很多的数据块,这样的数据块我们叫做存储单元,主存储器是由很多个存储单元构成的。这些存储单元都有一个从0开始数字逐渐变大的编号叫做地址。这些存储单元根据地址从小到大排成一列就构成了主存储器的结构。
在主存储器中,1个存储单元里面有8个电路,因此1个存储单元里面有8个二进制位。这8个二进制位可以表示00000000-11111111的数据。我们把二进制位的全0模式到全1模式的所有表示叫做位模式。
在计算机科学中,我们把1个二进制位叫做1个比特,英文名叫bit。8个二进制位当然叫做8个比特,英文名叫8bit。
存储器的大小叫做存储器的容量,不同的存储器的容量大小也是不一样的。在计算机科学中,我们用字节来表示存储器的容量。随着存储器容量不断地变大因此有了千字节、兆字节、吉字节、太字节等存储器容量单位。
在计算机科学中规定一个存储单元是一个字节,一个字节里面有8个二进制位,因此一个字节等于8bit,又规定使用英文B来表示字节,KB来表示千字节,MB来表示兆字节,GB来表示吉字节,TB来表示太字节,还规定了1B=8bit,1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB。
有了关于存储器知识的铺垫,接下来,我们开始正式地学习吧。
第一部分:二进制
一、什么是二进制?
二进制又叫做二进制计数法,在数学和数字电路中指以2位基数的计数系统。在这个计数系统中,通常用两个符号0和1来计数。满2就进1.
用了二进制计数法,那么在实际生活中,怎么使用二进制计数法来计数呢?别着急,我们继续往下学。
二、怎么使用二进制计数?
17世纪至18世纪德国数学家莱布尼茨,是世界上第一个提出二进制计数法的人。用二进制计数法,只用0和1两个符号来表示二进制计数法,不需要其他符号来表示。因为0和1是两个符号不是具体的数,因此0和1两个符号不能表示具体的数,但是随着计算机科学的发展人们迫切希望用二进制来表示具体的数,因此数学就开始研究怎么用二进制来表示数了。注意,这里有一句话小唐需要解释一下,那就是“用二进制表示数”,其实讲的就是使用二进制来表示十进制的数字。
三、二进制怎么表示十进制的数字呢?
在数学中,随着对二进制计数法的研究不断深入。慢慢地诞生出了一套用二进制计数法表示十进制数字的理论体系。
在这套理论体系中规定“二进制也采用位置计数法,其位权是以2为底的幂,要使用二进制表示法来表示十进制数字,需要通过二进制每一个位的位符号乘以该位的位权来表示,最后把不同的位符号乘以位权的值相加即可”。
对于不同二进制位的位权是多少?理论体系是这样说的“二进制计数法分为整数二进制和小数二进制。在整数二进制位中,从右到左其第一个二进制位的位权是2的0次幂,依次类推;在小数二进制位中,其小数部分从左到右第一个二进制位的位权是2的-1次幂,依次类推”。因此,如果我们需要把二进制111.01表示成十进制的数字,我们需要如下图的求解。
二进制转化为十进制
在此,我们已经学会了使用二进制来表示十进制数据。那么,我们怎么把十进制数据用二进制来表示呢?精彩继续。
四、怎么把十进制数据转换成二进制表示?
同样的道理,在数学中规定“十进制转换二进制,需要把整数部分和小数部分分别转换,再进行组合”。整数部分和小数部分分别具体是怎么转换的呢?我们继续。
五、十进制整数部分怎么转换成二进制?
在数学中规定,把十进制整数部分转换成二进制的思想是“除2取余,逆序排列”。其具体做法是“用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数。如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制的低位符号,后得到的余数作为二进制的高位符号,依次排列起来。”如:求解125的二进制表示,如下图:
十进制整数部分转换为二进制
根据图中步骤得到十进制125的二进制表示为1111101。为了用1个字节来表示十进制数据,因为是正数所以我们在最高为用0补齐表示为01111101。反之,如果是负数在最高位我们需要用1补齐。接下来,我们来看看十进制小数部分的二进制表示。
六、十进制小数部分怎么转换成二进制?
在数学中规定,把十进制小数部分转换成二进制的思想是“乘2取整”。其具体做法是“用十进制的小数乘以2并取走结果的整数(必是0或1),然后再用剩下的小数重复刚才的步骤,直到剩余的小数为0时停止,最后将每次得到的整数按先后顺序从左到右排列即得到所对应二进制小数。”如:求解十进制0.8125的二进制小数表示,如下图:
十进制小数部分转化为二进制
如果你是计算机专业人员,你可能会知道,在计算机存储中,整数的存储是通过补码计数法来进行存储的。如果你是非计算机专业人员,看了小唐的描述后你应该也知道了计算机是通过补码计数法来存储整数的。接下来,我们将学习整数在计算机中的存储方式--补码计数法了。
第二部分:补码计数法
学习补码计数法其实很简单,只需要一张图就足够了,这张图足够帮助你理解补码计数法。不信?我们上图!
图形化理解补码计数法
一、小唐带你学习补码计数法
学习补码计数法其实只需要掌握补码计数法的特点就可以了。通过观察上图,聪明的人也许看出来补码计数法的特点了。小唐就不给大家卖关子了,上干货!
其实,在计算机科学中补码计数法有着以下几个特点:
(1)补码计数法中全0位模式表示十进制数字0,全1位模式表示十进制数字-1;(2)在补码计数法中全0模式依次加1,可以表示十进制数字1,2,3等;(3)在补码计数法中全1模式依次减1,可以表示十进制数字-2,-3,-4等;(4)在补码计数法中最左边的二进制位叫做最高位,最高位是0表示正数,最高位是1表示负数。看见了吧,掌握了补码计数法的特点,你就学会了补码计数法。这个时候,有一些读者又会为难小唐了。你这介绍的补码计数法特点对于二进制位数少得还比较实用,那二进制位特别多的时候岂不是计算很费时间,有没有一种办法来表示绝对值相同的正负数补码的快速方法。
当然有了,小唐这就给你安排上!
二、小唐给你传授一个技巧
其实,在计算机科学中,有一种快速表述绝对值相同的正负数补码的方法。就是“先用补码表示出绝对值相同但是正数的数字,之后根据一定的规律在正数的基础上表示出绝对值相同的负数的补码”。这个规律其实也很简单,就是“表示绝对值相同的负数的时候,从右到左依次复制正数的补码的二进制位,直到该二进制位出现1的时候,剩下的其余二进制位取反”就行啦!什么是取反呢?在这一阶段你只需要简单地理解为“二进制位是1取反后是0,二进制位是0取反后是1”就行了。我们上实例:用补码计数法表示6和-6.我们可以按照下图的步骤来求解。
求解绝对值相同地正负数二进制补码
愉快的时光总是短暂的,很快又到了小唐和大家说再见的时候了。在下一篇文章中我们来自一线的软件测试工程师干货分享继续。不见不散。
Ps.如果你觉得小唐给你带来的计算机知识分享很实用,欢迎你推荐给身边的朋友。在这里,小唐不胜感激。你们的鼓励和分享是小唐创作的动力。最后,还是真心地希望你给小唐的这篇文章点个赞和收藏吧,也欢迎在评论区留言。写到最后:欢迎关注账号“小唐IT实用技术讲解”,给你带来最实用的软件测试、研发、运维以及网络安全知识分享。
举报/反馈