深入理解计算及系统 Chapter2 学习笔记
Chapter2 信息的表示和处理
1.将一个十进制的数字x转换为n进制,可以用n反复除x,得到商q和一个余数r,然后用这个r作为最低位数字,反复这个过程直到商为0,则可以得到n进制的表示,其原理为:
x = a0nm + a1nm-1 +···+ amn0
2.每台计算机都有一个字长(word size),指明指针数据的标称大小。因为虚拟地址是以这样的一个字来编码的,所以字长决定的最重要的系统参数就是虚拟地址空间的最大大小。也就是说,对于一个字长为w位的机器,虚拟地址的范围为0~2w-1
3.小端法:最低有效字节在最前面的方式;大端法:最高有效字节在最前面的方式。如何判断?
#include <stdio.h>typedef unsigned char *byte_pointer;void show_bytes(byte_pointer start, size_t len) {size_t i;for(i = 0; i < len; i++)printf(" %.2x", start[i]);printf("\n"); }
4.左移和右移
(1)左移k位:丢弃最高的k位,并在右端补k个0
(2)右移分为逻辑右移和算数右移:
1)逻辑右移k位:左端补k个0,抛弃最低的k位
2)算数右移k位:左端补k个最高有效位的值,抛弃最低的k位
5.整数的表示
(1)无符号编码可以定义为一个映射B2Uw:{0, 1}w → { 0, 1,···, 2w-1 }
(2)补码编码可以定义为一个映射B2Tw:{0, 1}w → { -2w-1,···, 2w-1-1 }
(3)两种编码方式都具有唯一性(双射)
6.有符号数和无符号数之间的转换
处理同样字长的有符号数和无符号数之间的相互转换的一般规则是:数值可能会改变,但是位模式不变。记U2Bw和T2Bw将数值映射为无符号数和补码形式的位表示,则对于0 ≤ x ≤ 2w-1范围内的一个整数x,U2Bw会给出x的唯一w位无符号表示,T2Bw同理。
(1)补码转换为无符号数,对于TMinw ≤ x ≤ TMaxw的x,有
T2Uw(x) = x + 2w, x < 0; x, x ≥ 0
(2)无符号数转换为补码,对于0 ≤ x ≤ UMaxw的x,有
U2Tw(u) = u, u ≤ TMaxw; u - 2w, u > TMaxw
(3)当一个运算数是无符号的时候,另一个运算数也被隐式强制转换为无符号
(4)当一个有符号的short型转成unsigned int时,会先改变大小,再完成有符号到无符号的转换
7.扩展一个数字的位表示
(1)有符号数:符号扩展,即按最高有效位的值扩展
(2)无符号数:零扩展,即扩展位均为0
8.截断数字(截断为k位)
(1)有符号数:x' = U2Tk(x mod 2k),即x先看做无符号数,取模后再转换为有符号数
(2)无符号数:x' = x mod 2k
9.整数运算
(1)无符号数加法:对于满足0 ≤ x, y < 2w的x和y有
x + y = x + y, x + y < 2w; x + y - 2w, 2w ≤ x + y < 2w+1(算数溢出)
(2)有符号数加法:对于满足-2w-1 ≤ x, y ≤ 2w-1-1的x和y有
x + y = x + y - 2w, x + y ≥ 2w-1(正溢出); x + y, -2w-1 ≤ x + y ≤ 2w-1-1(正常); x + y + 2w, x + y < -2w-1(负溢出)
总结:整数加法运算溢出时,采用截断策略
(3)补码的非:对于满足-2w-1 ≤ x ≤ 2w-1-1的x,其补码的非由下式给出
-x = -2w-1, x = -2w-1; -x, x > -2w-1
实际上,-x与~x+1得到的结果一样
(4)无符号数乘法:对于满足0 ≤ x, y < 2w的x和y有
x * y = (x * y) mod 2w
(5)有符号数乘法:对于满足-2w-1 ≤ x, y ≤ 2w-1-1的x和y有
x * y = U2Tw((x * y) mod 2w)
总结:整数乘法运算溢出时,同样采用截断策略
10.乘以常数
大多数机器上,乘法指令相当慢,需要10个或者更多的时钟周期,比移位和加法的代价要大得多,编译器会试图以移位、加法和减法的组合来消除很多整数乘以常数的情况,如将a × 14表示为(a << 3) + (a << 2) + (a << 1)
11.除以2的幂
(1)规则为:向下舍入一个正值,向上舍入一个负值
(2)无符号数就是简单的算数右移操作。而有符号数的除法,对于x ≥ 0,效果与逻辑右移相同;对于x < 0,使用(x + (1 << k) - 1) >> k产生结果,从而得出符合(1)中规则的结果
12.浮点数
(1)IEEE浮点数的表示:V = (-1)s × M × 2E,这里s为符号位,决定数是负数(s = 1)还是正数(s = 0);尾数M表示一个二进制小数,范围为1~2-ε(规格化)或0~1-ε(非规格化);阶码E的作用是对浮点数加权
(2)32位浮点数包含:1位符号位 + 8位阶码 + 23位尾数;64位浮点数包含:1位符号位 + 11位阶码 + 52位尾数
(3)阶码的值决定了这个数是规格化的(不全为0)或非规格化的(全为0)或特殊值(全为1)
(4)非规格化的浮点数表示0或接近0的数
(4)对于规格化的浮点数,阶码的值是E = e - Bias,这个Bias为一个偏置值2k-1-1,且总能通过调整E,使得尾数是以1开头的,也就是1.fn-1fn-2...f0,这样做可以省去表示1的那位,可以多表示一位精度
(5)对于非规格化的浮点数,阶码的值是E = 1 - Bias,不用-Bias表示是因为用1-Bias可以和规格化浮点数对接起来,实现平滑的转变;尾数没有隐藏位,因此是从0开始到1-ε
转载于:https://www.cnblogs.com/cedriccheng/p/9563073.html
深入理解计算及系统 Chapter2 学习笔记相关推荐
- 百度计算广告学沙龙学习笔记 - 内容匹配广告
百度计算广告学沙龙学习笔记 - 内容匹配广告 时间 2014-02-05 18:53:55 CSDN博客 原文 http://blog.csdn.net/three_body/article/det ...
- 《深入理解LINUX内存管理》学习笔记(一)
引子 为什么要写这个笔记: 1,这本书的中文版翻译了太垃圾,没法阅读.阅读英文原版,可以很好的理解作者的思路.作此笔记备忘 2,一直以来学习LINUX kernel的知识缺乏系统化,借对这本书的学习, ...
- 后台系统可扩展性学习笔记
整理了一下笔记目录,将以前学习的一些知识串联起来了,比如cdn.负载均衡.中间件,以前只是各自了解了一点,现在大概理清了后台系统设计中他们各自的作用. 后台系统可扩展性学习笔记(一)概要 后台系统可扩 ...
- 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言
嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...
- 计算机组成原理 | 第八章《计算机的外围设备》、第九章《输入/输出系统》 学习笔记
计算机组成原理 | 第八章<计算机的外围设备>.第九章<输入/输出系统> 学习笔记 引言 & 声明 第一章 计算机系统概论 第二章 计算机中数据的表示方法 第三章 运算 ...
- CIM系统导论学习笔记
CIM系统导论学习笔记 企业管理的基本概念与企业运作 信息与信息技术 大数据 信息技术支持下的企业创新 企业管理信息系统 工程设计分系统 制造自动化系统 CIMS的组成和集成 CIM是组织现代化生产的 ...
- 快餐店收银系统Pos学习笔记
#快餐店收银系统Pos学习笔记 ##第一节mockplus 这是一个产品经理使用的软件,可以大概地做出网页样式. ##第二节安装vue-cli环境 mpm install vue-cli -g 全局下 ...
- 嵌入式系统设计师学习笔记①:数的进制转换
嵌入式系统设计师学习笔记:数的转换 进位计数制系统的基本概念:数制,基数,数码,数位,位权 制作了个表格如下: 在十六进制中:A-10,B-11,C-12,D-13,E-14,F-15. 举例各种进制 ...
- 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)
文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...
最新文章
- python基础教程 下载-Python基础教程第3版中国PDF电子书免费下载
- jenkins docker 自动部署 构建_jenkins+docker+vue项目的自动部署环境
- kaldi 源码分析(七) - HCLG 分析
- 【Tyvj1783】【codevs2418】【BZOJ1856】字符串,厉害的组合数与模型转换
- 斯坦福 CS183 Peter Thiel 创业课资料整理
- MQ(队列消息的入门)
- C#添加二维码带加密带logo
- java实现日历打印项目
- Proxyee-down 3.x的下载与安装
- #!/usr/bin/env node 到底是什么
- MNL——多项Logit模型学习笔记(二)
- Python自然语言处理实战(1):NLP基础
- 服务器防火墙怎么关闭?
- 极大似然估计原理详解
- 屏蔽北京IP 外地正整打开
- 11. 爬虫训练场,学校数据分页呈现,Bootstrap5 媒体组件
- 使用Java统计某个目录下各种类型文件的数量
- Sql2005安装错误:1406
- position:fixed定位后下面紧接着div等元素的问题
- 有哪些文档和知识管理工具推荐? - 易智编译EaseEditing