计算机组成原理相关知识

网络容量:

  • 1 Byte = 8 bits (1 字节 = 8 比特位)
  • 容量单位:图示
  • 为什么网上买的移动硬盘500G但格式化之后只有465G了?
    因为硬盘商一般用10进位标记容量(即 1G = 1000MB),即:
    500 ∗ 100 0 3 102 4 3 ≈ 465 \frac {500 * 1000^3}{1024^3} \approx 465 1024350010003465
    换算下来就是465G。

网络速度:

  • 网络常用单位为:Mbps (Mbit/s)
  • 为什么电信拉的100M光纤,测试时峰值速度只有12M每秒?
    这里的100M并不是容量,而是网络速度。他这里的100 M其实指的是100 Mbps,也就是100 Mbit/s。
    100 Mbit/s = (100/8) MB/s = 12.5 MB/s

CPU速度:

  • CPU的速度一般体现为CPU的时钟频率(单位:赫兹Hz)
  • 主流CPU的时钟频率都在2GHz以上
  • Hz其实就是秒分之一,比如蜜蜂的翅膀每秒震动400次,那么蜜蜂翅膀的震动频率大概是400Hz。
  • CPU频率表示的其实就是高低电平每秒变换的次数。2GHz = 2 * 100 0 3 1000^3 10003Hz = 每秒20亿次,Ghz即十亿赫兹(10^9 Hz)

计算机的字符与编码集:

一开始的ASCII码:

  • 使用七个bit就可以完全表示ASCII码
  • 包含95个可打印字符和33个不可打印字符(控制字符)。
  • 95 + 33 = 128 = 2 7 2^7 27

但由于很多应用或者国家中的符号都无法表示,比如" ≈ \approx π \pi π"等字符ASCII都没有,因此第一次对ASCII进行扩充(Extended ASCII)。7bits ⇒ 8bits。

中文编码集:

  • GB2312,是我国最早最完备的一个编码集,但不符合国际标准。
  • GBK,向下兼容GB2312,向上支持国际ISO标准,但只是本地化的编码,也就是只能在中国用,如果跨国使用会有问题。
  • Unicode,兼容全球的字符集。UTF-8以字节为单位对Unicode进行编码。Unicode定义了世界通用的符号集合。
  • 编程推荐使用UTF-8编码,Windows系统默认使用GBK编码。

整数二进制转十进制:按权展开法

例:将二进制11101101转化为十进制

11101101 = 1 ∗ 2 0 + 1 ∗ 2 2 + 1 ∗ 2 3 + 1 ∗ 2 5 + 1 ∗ 2 6 + 1 ∗ 2 7 = 237 11101101 = 1 * 2^0 + 1 * 2^2 + 1 * 2^3 + 1 * 2^5 + 1 * 2^6 + 1 * 2^7 = 237 11101101=120+122+123+125+126+127=237

整数十进制转二进制:重复相除法

例:将十进制101转化为二进制
图示
即 101 = 1100101

小数二进制转十进制:按权展开法

例:
图示

小数十进制转二进制:重复相乘法
例:
图示

原码表示法:

  • 使用0表示正数,1表示负数
  • 规定符号位位于数值第一位。
    例: 示例
  • 便于人类理解,简单明了

缺点:

  1. 0有两种表示形式:00、10,有歧义
  2. 原码运算非常复杂,特别是两个操作数的符号不同的时候:
    (1) 判断两个操作数的绝对值大小
    (2) 用绝对值大的数减绝对值小的数
    (3) 对于符号值,以绝对值大的为准

补码:

  • 引进补码目的:
    1. 减法运算复杂,希望找到使用正数代替负数的方法
    2. 是用加法代替减法操作,从而消除减法
  • 补码定义:
    图示

例1:求x = 13的二进制原码和补码
原码:x = 13 = 0,1101
补码:x = 13 = 0,1101

例2:求x = -13的二进制原码和补码
原码:x = -13 = 1,1101
补码:x = -13 = 2 4 + 1 2^{4+1} 24+1 - 13 = 100000 - 1101 = 10011 = 1,0011

由例2可知,在计算补码的过程中,还是使用了减法!

反码:

  • 引进反码的目的:找出原码和反码之间的规律,消除转换过程中的减法。
  • 反码定义:
    图示

例1:求x = -13的二进制原码和反码
原码:x = -13 = 1,1101
补码:x = -13 = ( 2 4 + 1 2^{4+1} 24+1 - 1) - 13 = 011111 - 1101 = 10010 = 1,0010

由下图:
规律
可以得出三个结论:

  • 正数的原码、反码、补码相同
  • 负数的反码等于原码除符号位外按位取反
  • 负数的补码等于反码 + 1
    重要结论

小数的补码:

例1:求 x = 6 19 \frac 6{19} 196的二进制原码、反码和补码
原码:0, 0.1001
反码:0, 0.1001
补码:0, 0.1001

例2:求 x = - 11 32 \frac {11}{32} 3211的二进制原码、反码和补码
原码:1, 0.01011
反码:1, 1.10100
补码:1, 1.10101

定点数:

  • 定义:小数点固定在某个位置上的数称之为定点数
  • 定点数的表示方式:
    图示

注:如果要表达的数字既不是纯小数(整数部分是0的小数),也不是纯整数,则需要乘以比例因子以满足定点数的保存格式。

示例:
示例
左面的小数,默认的小数点就在符号位和数值位之间,小数点是不用表示出来的,右面的整数,默认的小数点位于数值位的后面。

对于既不是纯小数也不是纯整数的,比如10.01,则需要把小数点左移2位或右移2位以满足纯小数或纯整数的保存格式。

浮点数:

  • 为什么有了定点数还需要使用浮点数呢?
  1. 计算机处理的很大程度上不是纯小数或纯整数
  2. 数据范围太大,定点数难以表达
  3. 定点数不够灵活

浮点数的表示形式:
任意一个十进制数N可以写成: N = 1 0 E × M N = 10^E \times M N=10E×M
同样的,在计算机中一个任意二进制数N可以写成 N = 2 e × M N = 2^e \times M N=2e×M

其中,M称为浮点数的尾数,是一个纯小数。e是比例因子的指数,称为浮点数的指数,是一个整数。比例因子的基数2对二进记数制的机器是一个常数。

在早期计算机中,一个机器浮点数由阶码和尾数及其符号位组成:
图示
后来为了便于软件移植,按IEEE754标准,32位浮点数和64位浮点数的标准格式位:
图示
不论是32位浮点数还是64位浮点数,由于基数2是固定常数,对每一个浮点数都一样,所以不必用显示方式来表示它。

32位的浮点数中,S是浮点数的符号位,占1位,安排在最高位,S = 0 表示正数,S = 1表示负数。M是尾数,放在低位部分,占用23位,小数点位置放在尾数域最左(最高)有效位的右边,E是阶码,占用8位,阶符采用隐含方式,即采用移码的方法来表示正负指数。采用这种方式时,将浮点数的指数e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E = e + 127(指数e = 阶码E - 127)。

对于规格化浮点数,32位浮点数表示中,E的范围是1 ~ 254,真正的指数值e则为-126 ~ +127。64位浮点数表示中,E的范围是1 ~ 2046,真正的指数值e为-1022 ~ 1023。注:底数是2。

浮点数的规格化表示:当尾数的值不为0时,尾数域的最高有效位必须是1。例如:

图示
在IEEE754标准中,一个规格化的32位浮点数 x 可以表示为: x = ( − 1 ) S × ( 1. M ) × 2 E − 127 x = (-1)^S \times (1.M) \times 2^{E-127} x=(1)S×(1.M)×2E127 e = E − 127 e = E - 127 e=E127

其中尾数域所表示的值是1.M由于规格化的浮点数的尾数域最左位(最高有效位)总是1,故这一位经常不予存储,而认为隐藏在小数点的左边。于是用23位字段可以存储24位有效数。

64位的浮点数中符号位1位,阶码域11位,尾数域52位,指数偏移量是 1023,因此规格化的65位浮点数 x 可以表示为: x = ( − 1 ) S × ( 1. M ) × 2 E − 1023 x = (-1)^S \times (1.M) \times 2^{E-1023} x=(1)S×(1.M)×2E1023 e = E − 1023 e = E - 1023 e=E1023

示例:
示例
指数e = 阶码 - 127 = 10000010 - 01111111 = 00000011 = 3

注意:浮点数的尾数是一个纯小数!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静波波呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值