计算机内部一些基本组成
![](https://i-blog.csdnimg.cn/blog_migrate/687cedd5f97d93e030c3c651aeaa3cc8.png)
目前计算机的基本构架,运算器和控制器集成到一个芯片上,称为中央处理器(CPU),CPU和主存储器共同组成主机。
如上图所示:
地址寄存器(MAR)存放访存地址,经过地址译码后找到所选的存储单元。数据寄存器(MDR)用于暂存要从存储器中读写的信息。(注意,虽然mdr和mar是存储器的一部分,但现代制造中都被放在cpu中)
运算器的核心是算术逻辑单元(Arithmetic logic unit,ALU)。运算器还包含若干通用寄存器,用于暂存操作数和中检结果。其中,累加器,乘商寄存器和操作数寄存器是必须有的。运算器内还有标志寄存器,用来存放alu运算后得到的一些标志信息等,比如结果是否溢出,有无进位等。
控制器由程序计数器(PC),指令寄存器(IR)和控制单元(CU)组成。其中pc用来存放即将执行的指令的地址,可以自动加1形成下一条指令地址,它与mar之间可以直接连接。IR用来存放当前的指令,其中的内容来自MDR。指令中的操作码OP被发送至CU,经过分析后形成各种操作序列;地址码被发送至MDR,用来获取操作数。
一些概念
高级语言(一般来说)通过编译程序称为汇编语言,汇编语言再经过汇编程序形成二进制代码。
编译程序:将高级语言编写的源程序的全部语句一次性全部翻译成为机器语言程序,而后再统一执行机器语言程序。
解释程序:将源程序的一条语句翻译成对应机器语言的语句,并立即执行,然后再翻译下一句。常见的比如python,shell等脚本语言。
机器字长:计算机能直接处理的二进制数据的位数。一般等于内部寄存器的大小,决定计算机的运算精度。
指令字长:一个指令字中包含的二进制代码位数。
存储字长:一个存储单元存储的二进制代码的位数。
注意:上述三个字长都必须是字节(byte)的整数倍
简单的进制互相转换
二进制向八进制,十六进制转换。
![](https://i-blog.csdnimg.cn/blog_migrate/c7b0fe48907e1a053c4f935df1f530cc.png)
以上述例题为例,不多说明。
任意进制数转十进制
![](https://i-blog.csdnimg.cn/blog_migrate/10d2336ef6d2490f33213554c302d22f.png)
以上为例,按照不同进制的位权展开相加即可。
十进制转任意进制
![](https://i-blog.csdnimg.cn/blog_migrate/a9f26cdd476d95b61b6b35c47d8a4138.png)
以上为例。整数部分采用除基取余法,小数部分采用乘基取整法。
一点理解:在除基取余法中,最先得到的余数是最低位,因为最先得到所以位权最低(最先得到最靠近小数点);乘积取整法中,最先得到的整数是最高位,因为最先得到所以位权最高(最先得到最靠近小数点)