文章目录

  • 课程一
    • 综述
  • 课程二
    • 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]范围内的数字不会发生变化
  • 有符号扩充位数
    • 一个字符为 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

加减运算

  • 无符号相加

    • 假设byte位只有4位存储

      • 1101=13
      • 0101=5
      • 二者相加得 10010 因为只有4位 第5位舍弃,则结果为0010=2
      • 结果:(13+5)mod(10000(2))=2
  • 有符号相加

    • 假设4位bits 有符号位

      • 1101 = -3
      • 0101 = 5
      • -3+5 = 10010 舍弃超出的位数,得到0010 = 2
    • 补码可以将 加减全变为加法运算。
      • 1101 = -3 1101=-3
      • 二者相加 = 11010 不要超出的一位 得1010 = -6
  • 负溢出(假设存储位为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 向下取整
    • 有符号右移
      • 1010 = -6 算术移位 不是逻辑移位

        • >>1 = 1101 = -3
        • >>2 = 1110 = -2
        • 需要添加偏移量 +1
        • 1101 +1 变为 1110 然后再移位 = 1111 = -1
        • 计算机在进行移位操作时会添加偏移量再移位(尽量避免除法运算,除法运算会花费30个clock(时钟周期))
    • 负数得计算就是 取法然后加一
  • 大端序和小端序

    • 最低有效位放在首位是小端序
    • 最低有效位存在尾端是大端序

浮点数

  • 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.11011011011012​frac=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相关推荐

  1. 【操作系统】CSAPP学习笔记

    CSAPP学习笔记 前言 在阅读本书前,最好先了解一下书本的结构,然后根据结构,网上查查网评.最好能找到一些最佳阅读技巧.可以给自己定一个大一点的目标,比如,期望读完这本书,可以自己设计一个操作系统. ...

  2. ELK搜索学习笔记--Day1

    ELK搜索学习笔记–Day1 1. 课程简介 1.1 课程内容 ELK是包含但不限于Elasticsearch(简称es).Logstash.Kibana 三个开源软件的组成的一个整体.这三个软件合成 ...

  3. HCIA学习笔记day1

    HCIA学习笔记day1 衡量网络优劣的几个标准: 带宽:在一段时间内,从一个点到另一个点的最大传输量 传输的数据量单位是比特 延迟:数据从一个点到达另一个点所经历的时间 200Mbps 单位是比特 ...

  4. CSAPP学习笔记——第九章 虚拟内存(一)内存陷阱

    CSAPP学习笔记--第九章 虚拟内存(一)内存陷阱 int val; ... scanf("%d", val); 引用了错误的指针,scanf将val解释为一个地址,并试图将一个 ...

  5. 【shaw学习笔记day1】Python21天+人工智能预科学习日记

    Python数据类型及字符串字节串转换+概率论复习 这里是shaw,用于记录技术学习笔记和各类干货分享: 为记录学习生活和激励成长,开始这个专栏,希望自己日后可以坚持,初心不变. Python21天 ...

  6. MSP432E401Y学习笔记day1

    21年电赛仪器仪表类a题要求必须使用TI公司生产的单片机,且不能使用片外AD,当时暑期的时候在电赛官网上有答题签到领板卡的活动,所以我们当时有两块MSP432E401Y型号的开发板在手上,查过资料后发 ...

  7. JavaSE学习笔记-Day1

    笔者是一名大二在读本科生,最近闲着无聊重拾起Java这门语言,看了些许教学视频后居然还觉得挺有意思,"情不知所起,一往而深".于是决心认真学习这门语言!由于身居科班,自然不是零基础 ...

  8. Mysql学习笔记day1 --三天学完mysql所有知识点

    Mysql 超全MySQL学习笔记,三天就可以学会熟练运用SQL语句,干货满满,文章末尾有相应的练习题,可以多练练加深印象,希望我的文章对你有所帮助 一.服务器 1.什么是服务器?用于提供共享资源文件 ...

  9. ZYNQ学习笔记------day1

    ZYNQ第一天学习笔记 1.Zynq-7000 All Programmable SoC ZYNQ是赛灵思公司(Xilinx)推出的新一代全可编程片上系统,它将处理器的软件可编程性与FPGA的硬件可编 ...

最新文章

  1. 使用OpenVas漏扫
  2. QQ在线客服代码,飘浮在右侧的QQ客服js特效演示
  3. 模拟一:STEMA 考试选择题模拟练习试卷(初级组)及答案 + 自我解题笔记
  4. xampp打开mysql的admin访问被拒绝_我被我的电脑磁盘拒绝了,为什么打不开,而显示“拒绝访问”呢...
  5. oracle隐藏游标,Oracle 存储过程隐藏游标
  6. verilog 简单module_一个简单的verilog小程序
  7. 国产化之路-统信UOS /Nginx /Asp.Net Core+ EF Core 3.1/达梦DM8实现简单增删改查操作
  8. VUE系列-Vue核心应用(二)
  9. 用vue和node写的简易购物车
  10. uva11609(组合数学,快速幂)
  11. Python3.x Numpy中的array数组_矩阵操作
  12. ad19pcb所有元件都在报错_AD09如何放置过孔阵列?Allegro PCB,元器件高度限制区域设置?...
  13. Go 语言入门系列:指针的基本应用
  14. 【启动程序是无法加载 libnsl.so.1】
  15. Android桌面图标快捷方式
  16. power apps -- Game Demo page 制作游戏步骤详解
  17. JavaScript实现的放大镜放大图片效果
  18. 基于健康档案的区域卫生信息平台-总体架构图
  19. 互联网日报 | 6月20日 星期日 | 宁德时代否认强制员工购买特斯拉;小米618支付金额破190亿元;岚图FREE正式上市...
  20. HCIP(华为高级网络安全工程师)(实验五)(OSPF综合实验)

热门文章

  1. 揭示win32 api拦截细节
  2. pboot 将编码转换为实体html_PbootCms在模板中对定制标签中的内容进行二次处理
  3. php 商品模块添加商品属性,添加新商品
  4. uni-app做android应用开启定位权限
  5. 数字 IC 技能拓展(22)原码、反码、补码、移码的区别与联系
  6. c++ 两个Map容器的差异性比较,返回差异内容
  7. 品牌推广方法大全(收藏日后必有用处)
  8. mybatis反向生成实体类、dao层以及映射文件
  9. 古诗文网站之网络爬虫
  10. dvd光驱在计算机内怎么找不到,电脑DVD光驱消失找不到怎么处理