关于进制转换(2的次数类进制),取余(MOD)的简要讨论

前言

上学期我学习了“计算机组成原理”,在我们书上的例题中(这里用我们使用的教科书《计算机组成原理(第三版)————唐朔飞》第95页   例4.1来举例),其中会用到将十六进制数字转换为二进制数字来求线的位数的操作

还有我们常常会接触到各种机器数,原码,补码,反码,移码,校验码等等,其中不乏会用到模(取余)的操作,接下来我将对这两种操作进行如下简要讨论

附:本文涉及《计算机组成原理》中的部分知识,在此加入链接《计算机组成原理——详细笔记》供希望进一步了解的同学继续细致学习

进制转换

这里我们引入“前言”中提到的例题,如下图所示

因为本文讨论的主要是关于进制的转换,这里就不显示译码器和门电路图示了,想要了解详情的同学可以通过前言中的链接详细学习~

这里涉及进制转换的主要为第一问:题干告诉了主存地址空间的分配区间,想要让你根据题干,把提到的十六进制区间转化为二进制区间,从而得到相对应的ROM与RAM的数量与大小

各进制的名称缩写

BIN                二进制

OCT              八进制

DEC              十进制

HEX              十六进制(10到15分别为A、B、C、D、E、F)

这里题干中的“6000H”就表示为:十六进制下的6000        (末尾的H是十六进制的标志)

这里放出转化完成后的结果图

可以看到,四位的十六进制数字全部变为了16位的二进制数字,通过上下区间对比可以发现(蓝笔划分),差异区间在A_{0}A_{10},共11位,则在二进制中即为2^{11},结合题干所述“8根数据线”,最终结果为系统程序区为2K\cdot8位,同理,用户程序区为1K\cdot8

在此例中,我们可以很直观的看到,每四位二进制位对应一位十六进制位,原因也很简单,因为在十六进制中,满十六进一,最大数即为15,而15的二进制表示为1111,也就是说,用四位二进制位就能完全表示0到15的所有情况且同样满十六进一,符合条件。

知道原理后再次回顾上述题干,就能清楚看出十六进制与二进制之间的对应关系

相同道理,八进制中,满8进一,最大7所对应二进制为111,即每三个二进制位对应一位八进制位,同理,每两个二进制位对应一个四进制位

综上可知:如有一串数字以2^{n}进制形式出现,则可用每n位二进制数对应一位2^{n}进制数的形式将其表现

接下来,我们开始了解关于十进制转化二进制的两种方法

辗转相除法

本质就是利用递归算法,一步步除2取余的过程,最终由下往上取余数即为转变完成的二进制数(注意:最终取余数时要算上最后的商)

这里附上一个简单的例子

如图所示,这里用辗转相除法求十进制下25的二进制数,连上最后一位的商,从下往上取余数即可得到25的二进制形式为:11001

简易手算法(适用于将二进制变为十进制)

其实这个手算法就是很直观的按位相加即可,以十进制来举例:如25,个位为5,十位为2,所以可见25是由两个十和五个一构成的,那么同理可知,如二进制下的11,其就是由一个2^{1}与一个2^{0}构成的,相加就可以得知其代表的就是十进制下的3

同理我们还是以25来举例:

由上述例图可知,25的二进制形式为11001,我们这次来尝试用提到的简易手算法将11001倒推为十进制,详解例图如下:

 

取余

书中的基本概念

在补码的学习中,我们了解到补数的基本概念

例如,时钟指示6点,欲使它指示3点,即可按顺时针方向将分针转9圈,又可按逆时针方向将分针转3圈,结果是一致的

因为6-3=3,6+9=15而在以12为最大数的时钟内,15所代表的就是3(15-12=3)

这样-3和+9对时钟而言其作用是一致的。在数学上称12为模,写作mod12,而称+9是-3以12为模的补数,记作-3\equiv +9           (mod 12)

上述这两段引用,是教材《计算机组成原理(第三版)》221页的原话,可能有点难以理解,接下来,我们从另一个角度来分析

除法角度的分析

-3\equiv +9        (mod 12)展开后就成为了:-3 mod 12=9,同理,9 mod 12=9,因此我们可以看到,-3\equiv +9并不等同于+9\equiv -3

因为mod的本质就是取余数,那么我们就可以利用简单的除法式子来理解mod,

如9 mod 12=9就可以写成  9\div12= 0……9,如果将结果写为不带有余数的小数形式的话,我们会发现商变为了0.75,但若带有余数(如上式),就会成为0,由此我们可以发现,再带有余数的式子里,其商较未带余数的式子的商进行了向下取整,我们可以通过多个例子来证明这一观点,这里就不多赘述了

那么同理,-3\div 12= -0.25,向下取整即为-1,由此写出他的带有余数的式子为:

-3\div 12=-1……9,由此我们就知道了-3 mod 12=9的由来了~

结束语

        作为进军计算机的小白一枚,这是我的第三篇博客,不追求有多高的质量,只是把我个人在大学的学习过程中发现的一点有意思的东西,或者也是我本人在学习过程中遇到的一点问题,经过思考在解决之后发出来的,也是作为我学习长路上的一点点见证,供自己与大家共勉~如果有对大学软件工程专业或计算机方向有各种好奇的同学,也可以在评论区或者私信留言,我会及时回复的~~~

谨以此篇献予我质朴的求学之路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值