CSAPP学习笔记 day1
文章目录
- 课程一
- 综述
- 课程二
- bits,byte,integer
- 浮点数表示
- 位运算
- 加减运算
- 乘法运算(同样是4bit)
- 浮点数
课程一
综述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TLBJAlgi-1618152935744)(C:\Users\10736\AppData\Roaming\Typora\typora-user-images\image-20210409185015611.png)]
for(i=0;i<n;i++){for(j=0;j<n;j++){dir[i][j] = sou[i][j] }
}//耗时4.2ms
for(i=0;i<n;i++){for(j=0;j<n;j++){dir[j][i] = sou[j][i] }
}//耗时82ms
func main() {n:=10000// fmt.Scanf("%d%d%d",&n,&m,&k)memo := make([][]int,n)dir := make([][]int,n)for i:=0;i<n;i++{memo[i] =make([]int,n)for j:=0;j<n;j++{memo[i][j] = j}dir[i] = make([]int, n) }t :=time.Now()for i:=0;i<n;i++{for j:=0;j<n;j++{dir[i][j] = memo[i][j]}}waste1 := time.Since(t)fmt.Println(waste1)t =time.Now()for j:=0;j<n;j++{for i:=0;i<n;i++{dir[i][j] = memo[i][j]}}waste1 = time.Since(t)fmt.Println(waste1)
}
耗时对比
460.9516ms
5.1390021s
课程二
bits,byte,integer
浮点数表示
- 8.25的二进制表示为1000-01
- 解释,使用 - 来表示符号位,符号位左边 表示二进制整数,符号位右边表示二进制小数,表示方法为 2^(-n) n代表位数,例如符号位右边第一个数为1则代表2^(-1) 值为0.5, 因此0.25则表示为符号位右边 01
位运算
- 01101001 这个二进制位可以表示一个数字集合 {0,4,6,7}(I/O 方法select里面的bitmap就是用的这种表示方式)
- 76543210 红色字体即为表达的数字
- 01010101 同理表示{0,2,4,6,}
- 因此&可以表示两个集合的交集
- |表示并集
- ^表示差集(表示两者不同的,并不是常规意义上的减)
- ~表示反集
- &&,||,! 不是位运算符而是逻辑运算符
- &&是不同的& 0x41 & 0x41 = 0x41 0x41 && 0x41 = 0x01
- ||是不同的| 0x41 | 0x00 = 0x41 0x41 || 0x00 = 0x01
- !是不同的~
- >>和<<操作
- >> 逻辑右移 前置位直接填充0
- >> 算术右移 前置位填充符号位 (和负数操作相关)
- 计算机数字表示形式 以5个bit表示
- 无符号位时 umax
- 表示的数字最大为 11111 16+8+4+2+1=31
- 表示的范围为0 - 2^n-1 n为比特位
- 有符号位
- 最大数字为 01111 8+4+2+1 = 15 TMAX
- 最小数字为 10000 -16+0 = -16 TMIN
- 11111 表示的值为 -16+8+4+2+1 = -1
- 因此补码表示负数 为原码取反然后加一
- 00001 值为1 取反为 11110 然后加一 11111 值为-1
- T2U 和U2T 有符号转无符号和无符号转有符号
- 以上面为例,-1 经过T2U得到 31
- [0-15]范围内的数字不会发生变化
- 无符号位时 umax
- 有符号扩充位数
- 一个字符为 1110 首位是符号位 值为-2
- 如果进行有符号的扩充 变为11110 首位还是符号位 值还是为原来的 -2
- 所以如果想扩大数的位数表示,大于0的前面直接填0,而小于0的数前面直接添加1 (4 变8)
- 0011 -> 0000 0011 正数 3
- 1011 -> 1111 1011 负数 -5
- 如果一个字符为 10101 首位为符号位 -11
- 删除符号位为0101 =5 可以理解为-11 mod -16 = 5
- 一个数为 10101 首位不为符号位 21
- 删除首位 0101 = 5 21 mod 16 = 5
- 一个字符为 1110 首位是符号位 值为-2
加减运算
无符号相加
- 假设byte位只有4位存储
- 1101=13
- 0101=5
- 二者相加得 10010 因为只有4位 第5位舍弃,则结果为0010=2
- 结果:(13+5)mod(10000(2))=2
- 假设byte位只有4位存储
有符号相加
- 假设4位bits 有符号位
- 1101 = -3
- 0101 = 5
- -3+5 = 10010 舍弃超出的位数,得到0010 = 2
- 补码可以将 加减全变为加法运算。
- 1101 = -3 1101=-3
- 二者相加 = 11010 不要超出的一位 得1010 = -6
- 假设4位bits 有符号位
负溢出(假设存储位为4位)
- 1011 = -5
- 1011+1011 = 10110 舍弃最高位 得 0110 = 6 这就是负溢出
正溢出
- 0101 =5
- 0101+0101 = 1010 等于 - 6 这就是正溢出
乘法运算(同样是4bit)
无符号位时
- 5*5 = 25 11001 舍弃最高位 = 1001 = 9 等于25(mod)16(10000)
有符号位时
- 5*5 = 25 11001 舍弃最高位 加上符号位 = -7
- 5*4 = 20 10100 同理 = 4
补码乘法 U代表无符号位
- 1101 = -3 (13U)
- 1110 = -2 (14U)
- 13*14 = 182 转为二进制为 0xb6 1011,0110 舍弃多得4位 得 0110 = 6
一个数乘除 2^N 可以左移或者右移N
- 无符号右移
- 0110 = 6
- >>1= 0011 = 3
- >>2 =0001 = 1 向下取整
- 0110 = 6
- 有符号右移
- 1010 = -6 算术移位 不是逻辑移位
- >>1 = 1101 = -3
- >>2 = 1110 = -2
- 需要添加偏移量 +1
- 1101 +1 变为 1110 然后再移位 = 1111 = -1
- 计算机在进行移位操作时会添加偏移量再移位(尽量避免除法运算,除法运算会花费30个clock(时钟周期))
- 1010 = -6 算术移位 不是逻辑移位
- 负数得计算就是 取法然后加一
- 无符号右移
大端序和小端序
- 最低有效位放在首位是小端序
- 最低有效位存在尾端是大端序
浮点数
IEEE标准浮点数(标准化值)
v=(−1)s∗M∗2EE=Exp−Biasv = (-1)^s*M*2^E\\ E = Exp-Bias\\ v=(−1)s∗M∗2EE=Exp−Bias
Exp=unsignedvalueofexpfieldBias=2k−1−1,k=numberofexp→sigleprecision:127→doubleprecision:1023Exp = unsigned value of exp field\\ Bias = 2^{k-1}-1,k = number of exp\\ \rightarrow sigle precision: 127\\ \rightarrow double precision:1023\\ Exp=unsignedvalueofexpfieldBias=2k−1−1,k=numberofexp→sigleprecision:127→doubleprecision:1023
- Minimum when frac=000…0(M=1.0)
- Maximum when frac=111…1(M=2.0-e) (e是精度)
- 默认为1.0是为了多一个默认位
32 bits
- s(符号位) exp(整数位) frac(小数位) 1:8:23
64 bits
- s(符号位) exp(整数位) frac(小数位) 1:11:52
Value: float F= 15213.0
1521310=111011011011012=1.11011011011012∗21315213_{10}=11101101101101_2\\ =1.1101101101101_2*2^{13}\\ 1521310=111011011011012=1.11011011011012∗213
M=1.11011011011012frac=11011011011012M =1.1101101101101_2\\ frac = 1101101101101_2\\ M=1.11011011011012frac=11011011011012
E=13Bias=127Exp=140=100011002E = 13\\ Bias = 127\\ Exp = 140 = 10001100_2\\ E=13Bias=127Exp=140=100011002
最终表示结果:0∣10001100∣11011011011010000000000最终表示结果:0|10001100|11011011011010000000000 最终表示结果:0∣10001100∣11011011011010000000000
s 符号位为0,exp = 10001100
frac = 11011011011010000000000
0<=Exp<=255−127<=E<=1280<=Exp<=255\\ -127<=E<=128 0<=Exp<=255−127<=E<=128
- Denormalized Values(非标准化值)
- E = 1 - Bias
- M = 0.xxxx, frac = xxxx
- exp 全为1 frac全为0 表示无穷大
- exp 全为1 frac不全为0 表示Not a Number
CSAPP学习笔记 day1相关推荐
- 【操作系统】CSAPP学习笔记
CSAPP学习笔记 前言 在阅读本书前,最好先了解一下书本的结构,然后根据结构,网上查查网评.最好能找到一些最佳阅读技巧.可以给自己定一个大一点的目标,比如,期望读完这本书,可以自己设计一个操作系统. ...
- ELK搜索学习笔记--Day1
ELK搜索学习笔记–Day1 1. 课程简介 1.1 课程内容 ELK是包含但不限于Elasticsearch(简称es).Logstash.Kibana 三个开源软件的组成的一个整体.这三个软件合成 ...
- HCIA学习笔记day1
HCIA学习笔记day1 衡量网络优劣的几个标准: 带宽:在一段时间内,从一个点到另一个点的最大传输量 传输的数据量单位是比特 延迟:数据从一个点到达另一个点所经历的时间 200Mbps 单位是比特 ...
- CSAPP学习笔记——第九章 虚拟内存(一)内存陷阱
CSAPP学习笔记--第九章 虚拟内存(一)内存陷阱 int val; ... scanf("%d", val); 引用了错误的指针,scanf将val解释为一个地址,并试图将一个 ...
- 【shaw学习笔记day1】Python21天+人工智能预科学习日记
Python数据类型及字符串字节串转换+概率论复习 这里是shaw,用于记录技术学习笔记和各类干货分享: 为记录学习生活和激励成长,开始这个专栏,希望自己日后可以坚持,初心不变. Python21天 ...
- MSP432E401Y学习笔记day1
21年电赛仪器仪表类a题要求必须使用TI公司生产的单片机,且不能使用片外AD,当时暑期的时候在电赛官网上有答题签到领板卡的活动,所以我们当时有两块MSP432E401Y型号的开发板在手上,查过资料后发 ...
- JavaSE学习笔记-Day1
笔者是一名大二在读本科生,最近闲着无聊重拾起Java这门语言,看了些许教学视频后居然还觉得挺有意思,"情不知所起,一往而深".于是决心认真学习这门语言!由于身居科班,自然不是零基础 ...
- Mysql学习笔记day1 --三天学完mysql所有知识点
Mysql 超全MySQL学习笔记,三天就可以学会熟练运用SQL语句,干货满满,文章末尾有相应的练习题,可以多练练加深印象,希望我的文章对你有所帮助 一.服务器 1.什么是服务器?用于提供共享资源文件 ...
- ZYNQ学习笔记------day1
ZYNQ第一天学习笔记 1.Zynq-7000 All Programmable SoC ZYNQ是赛灵思公司(Xilinx)推出的新一代全可编程片上系统,它将处理器的软件可编程性与FPGA的硬件可编 ...
最新文章
- 使用OpenVas漏扫
- QQ在线客服代码,飘浮在右侧的QQ客服js特效演示
- 模拟一:STEMA 考试选择题模拟练习试卷(初级组)及答案 + 自我解题笔记
- xampp打开mysql的admin访问被拒绝_我被我的电脑磁盘拒绝了,为什么打不开,而显示“拒绝访问”呢...
- oracle隐藏游标,Oracle 存储过程隐藏游标
- verilog 简单module_一个简单的verilog小程序
- 国产化之路-统信UOS /Nginx /Asp.Net Core+ EF Core 3.1/达梦DM8实现简单增删改查操作
- VUE系列-Vue核心应用(二)
- 用vue和node写的简易购物车
- uva11609(组合数学,快速幂)
- Python3.x Numpy中的array数组_矩阵操作
- ad19pcb所有元件都在报错_AD09如何放置过孔阵列?Allegro PCB,元器件高度限制区域设置?...
- Go 语言入门系列:指针的基本应用
- 【启动程序是无法加载 libnsl.so.1】
- Android桌面图标快捷方式
- power apps -- Game Demo page 制作游戏步骤详解
- JavaScript实现的放大镜放大图片效果
- 基于健康档案的区域卫生信息平台-总体架构图
- 互联网日报 | 6月20日 星期日 | 宁德时代否认强制员工购买特斯拉;小米618支付金额破190亿元;岚图FREE正式上市...
- HCIP(华为高级网络安全工程师)(实验五)(OSPF综合实验)