计算机由 运算器 控制器 存储器 输入设备 输出设备
cpu由运算器 控制器 内部寄存器组 数据总线组成
运算器 算术逻辑单元 累加寄存器 数据缓冲寄存器 状态条件寄存器组成
ALU AC DR PSW
控制器:
指令控制逻辑
指令寄存器 IR 从内存中取得数据放入到数据缓冲寄存器中,在放入指令寄存器中暂存
程序计数器 PC 又称指令计数器 寄存信息和计数两个功能 顺序执行 转移执行
地址寄存器 AR 保存当前cpu所访问的内存单元的地址
指令译码器 ID 操作码和地址码 必须对操作码进行分析,以便能够识别所有完成的操作
原码反码补码移码,我晕,大学学习的东西全部忘光了。从隔壁csdn 拿过来一个兄弟的文章:
兄弟文章记录如下...看着和我大学学的差不多,那就先拿来吧
正数的原码、反码、补码都相同
负数的反码是原码符号位不变,剩余位按位取反
负数的补码是反码+1
而移码呢,无论正负数,都是在补码的基础上符号位取反
其实我记忆口诀的时候是这样记的,无论是整数还是小数,我都分为正数和负数,正数的原码反码补码相同,移码是补码的符号位取反,
负数的反码是符号位不变,剩余按位取反,补码是反码+1,移码是补码的符号位取反。
例如:
正数108(十进制)
01101100
01101100
01101100
11101100
负数108(十进制)
11101100
10010011
10010100
00010100
需要注意的几个地方:
(1)8位二进制数能表示的十进制数范围为-128到+127
(2)如果数小于-128或大于127,则会溢出,溢出只能用两个字节,16位二进制数表示了
(3)0的补码为00000000,-128的补码为10000000:
(4)计算机中有符号数用补码表示
(5)原码首位为标志位,1表示负数,0表示正数:
(6)反码 = 原码的标志位不变,其他取反
(7)补码=反码 + 1;
(8)正整数的原码、反码、补码相同
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原= [11111110]反= [11111111]补
-128在运算中的补码是 [1000 0000]补,并没有原码和反码表示
原码负数不能参与运算并且不能做减法运算
反码的+0和-0的反码不相同
提高电路的可靠性
提高代码的检验能力 查错和纠错
奇偶校验吗
海明码
循环冗余校验码