软件评测师学习笔记《计算机系统过程及硬件基础知识》part1

本文详细介绍了数制转换,包括二、八、十进制之间的转换,以及十进制小数转R进制的方法。此外,还讲解了存储相关概念,如机器数的特征、原码、反码、补码和移码,以及它们在加法运算中的表现。文章最后探讨了定点数与浮点数的差异,强调了浮点数在表示范围和精度上的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容

1,数制转换
2,数的表示
3,计算机的组成
4,基本概念
5,流水线
6,输入输出
7,存储体系
8,校验码

一、数制转换

在这里插入图片描述十进制数321十进制计算,可以发现,进制数都可以算回来
在这里插入图片描述
R进制转10进制,使用方法为按权展开法
将R进制数的每一位数值用R^k形式表示

对于负数次方,绝对值取反,2^2次方为4,2 ^-2次方为1/4
二进制转十进制10100.01=12^4+12 ^2+12 ^-2=16+4+1/4=20.25
八进制转十进制604.01=6
8^2+4* 8 ^0+18 ^-2=664+41+11/64=388.015625

**十进制小数转R进制小数,方法为乘R取整,每次乘以相应之后基数后取结果的整数部分即可。直到全为正整数为止,需要注意的是并非所有的十进制小数都能完全转化为R进制小数,这时就需要取近似值。

例: 8进制388.015625转十进制
小数部分
0.0156258=0.125 取整数部分0
0.125
8=1 取整数部分1(小数部分就是0了)
0*8=0 取整数部分0(小数部分还是0)
。。。。。一直可以计算下去
以上可得十进制小数部分为0.01
整数部分
388/8 =48 余4
48/8 =6 余0
6/8=0 余6
所以8进制388.015625转十进制为604.01,整数部分计算得倒着写,小数部分得正着写

1.1数的转换在这里插入图片描述观察上图可以发现,数的转换除了可以先转10进制,再转8或16进制计算外,还可用上述方法计算

解析:首先二进制的基数,只有0和1,如果是两位二进制,那么就有4个组合,可以表示4进制基数(0-3),如果是3位二进制,也就是8进制,8进制中(0-7的二进制表示)如下
000(0=0)
001(1 * 2^0 =1)
010(1 * 2 ^1=2)
011(1 * 2 ^1+1 * 2^0 =3)
100(122=4)
101(122+1 * 2^0 =5)
110(122+1 * 2 ^1=6)
111(122+1 * 2 ^1+1 * 2^0 )=7
观察以上,就很清楚了,2进制数转8进制数,8进制数有2^3 次方个基数
那么就有8种组合,可以表示8进制的基数(0-7),每个基数有三位二进制数组成
那么,二进制数10001110,可以从右往左进行分组,分成(010),(001),(110),头部10不够分,用0补齐三位,也就是说转为8进制是216
那么,16进制数同理,为2^ 4次方个组合,每个基数需要4位二进制数来表示,基数分别为0-9,a,b,c,d,e,f
10001110的16进制分组为4位一组(1000)(1110),计算得为1000=1*2^3=8,1110=1 *2 ^3+1 * 2^2+1 *2^1=8+4+2=14,16进制中14用E表示,所以转为16进制表示为8E
反过来计算,8进制216转二进制,把三位拆开来(2)(1)(6)分别用二进制表示,变成(010)(001)(110),也就是010001110,二进制是两个一组的,开头的0取消掉,就成了10001110
反过来计算,16进制数8E转二进制,把两位拆开来(8)(E),分别用二进制表示,变成(1000),(1110)

二、存储相关概念和数的表示

存储概念

在这里插入图片描述

数的表示

在这里插入图片描述
**机器数的特征:**机器数是由二进制表示的,小数点不需要占位来存储,最高的二进制位表示的是正负符号,0为正数,1为负数

**原码:**以二进制表示的编码制(用8位二进制表示一个数值),如上图1就表示为00000001,补全8位,如果是-1,则为10000001
原码做加法计算发现,1+(-1),首位相加为1,表示结果为负数,末位相加变为10(因为逢2进1)结果会为10000010,转为10进制为-1(1*2^1)=-2,所以原码不适合做加减法操作

**反码:**正数的反码等于原码,负数的反码,除符号位外,其它位按位取反,-1的的原码(10000001),反码(11111110)
反码做加法运算,1+(-1)=(00000001)+(11111110)=11111111(这是负多少懒得算了)可以看出也不适合做加减法操作

**补码:**正数的补码等于原码,负数的补码,先取反码,再在末尾位+1(变成了11111111)
补码做加法运算,1+(-1)=(00000001)+(11111111)=100000000,由于只能有8位,首位的1溢出了,结果就为00000000(+0),不用算也知道等于0,补码适合做加减法运算,因为补码可以直接把符号位带进去计算

**移码:**补码在表示浮点数时,会出现问题(跟考试无关,自行百度),所以需要移码来用于浮点数表示,补码的符号位取反,就得到了移码。
移码做加法运算,1+(-1)=(10000001)+(01111111)=100000000,看上去跟补码结果一样,首位溢出,结果为变为00000000,但是,移码符号位是需要取反的,计算出来的结果也需要取反,所以结果是10000000(-0)

整数数值范围
在这里插入图片描述
首先,这个n怎么来的呢
机器用8位二进制表示一个数值,那么n=8,原码的取值范围就是负(2^7-1)
2^7-1也就是–(128-1)127,也就是-127~~127
如果是用16位二进制表示,那么n=16,这样计算取值范围

n为什么要减1?
因为不管以多少位二进制表示一个数值,首位都是符号位,所以n需要-1

为什么原码,反码取值范围右边都得-1?
**个人理解:**正数范围-1是由于0也算正数,2^7=128,从0开始,所以需要-1,正数范围到127,
原码表示时,由于0的表示为00000000和10000000,负0也要占一个编码,所以负数那边也得-1

为什么补码,移码只需正方-1?
个人理解:补码表示时,正0表示为00000000,负0有10000000除符号位按位取反再末尾+1,变成100000000,1溢出,还是00000000,所以只有正0占位,正方-1,负0不占位,移码是补码的符号位取反,所以跟移码取值范围一样。

定点数与浮点数

**定点数:**小数点位置固定不变的数,小数点不需要占用一位二进制
定点整数:小数点固定在最后一位有效位之后,如8位二进制数00000001.
定点小数:小数点固定在符号位(数符)之后,如8位二进制数0.0000001
考点记忆:小数点不占位置,定点整数在最后一位有效位之后,定点小数在数符之后

浮点数:(小数点位置可变)N=MR^e
其中M称为尾数,e是指数,R为基数
例如:5
10^6 (5就是尾数,R是基数,E为尾数),也可表示为0.5* 10^7,或者0.05*10 ^8,以此类推

但是计算集中基数R是固定的,为2,因为原数据都是二进制的
这种浮点数要在计算机中保存,需要保存尾数M的值和指数e的值,因为R的值固定了(为2)
如下图所示,阶符(正负),阶码(二进制指数e)决定数值表示的范围,数符(正负),尾数(M)决定数值表示的精度

对于某个浮点数,修改它的阶码如M2^7,你可以增加阶码来扩大数的表示范围,比如可以表示为M2 ^77次方,这样数的范围就扩大了很多,但是这样,对于同一个浮点数N,一端增加了范围,另一端M的值就需要减少,才能表示同一个N,所以尾数M决定了数的精度(看不懂的话把R的值变成10)

计算:52^5-52 ^4=?(过程:先对阶,再计算尾数,结果格式化)
先把阶码换成相同的,也就是102^4-52 ^4=(10-5)2 ^4=52 ^4
在这里插入图片描述
**考点记忆:**浮点数,阶码表示范围,阶码越长表示数的范围就越大,尾数部分影响到数的精度

总结,以上主要讲了计算机数的存储概念,数的表示,机器数和码制,以及定点和浮点数,下节总结剩下内容

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值