WC2017 Day4

WC2017 Day4

计算机架构和程序底层优化

  • 卡常!卡常!
  • 好像就是洛可强论文内容

0x00 信息的表示和处理

  • 二进制

整数的表示

  • 位向量
  • 16进制

字长?

  • NOI Linux:32位
  • 这导致NOI Linux系统处理64位整数很慢
  • 大多数操作系统:64位

字节顺序?

  • 小端法
  • 大端法
  • 绝大多数个人计算机使用小端法

有符号数

  • 取反加一

四则运算

  • 除法向零取整(c++)

位运算与逻辑运算

  • 逻辑运算是短路的,1||i++并不会使i+1
  • 负数的移位运算并不好使,可能和你想象的不一样
  • 移位超过字长是未定义的,可能会出错

浮点数

  • 没什么好讲的

编程技巧

  • 整数当作位向量使用
  • 求1的个数?
  • 查表
  • 求后缀0的个数?
  • 二分法
  • 查表法
  • LOWBIT?
  • x & -x
  • bitset!
  • 用整数表示集合
  • 优化状压DP

0x01 程序的底层表示

机器指令

  • 汇编语言 第三版
  • 好书

  • 加减乘很快
  • 除法很慢
  • 跳转很不稳定

除法优化

  • 少取模
  • 除以常数的优化
  • 《论程序底层优化的一些方法和技巧》 洛可强 2009

0x02 CPU基础知识

数字逻辑电路

组合逻辑电路

CPU的实现

  • 线性
  • 流水线,会出问题
  • 解决方案:加Bubble,转发(Forwarding),分支预测
  • 现代CPU:超标量(多核),乱序执行

编程技巧

  • 用三元运算符(a>b?a:b)取代条件跳转,消除分支预测错误
  • 四路归并

0x03 层次存储方式

  • 磁盘(HDD)
  • 随机访问储存器(RAM)
  • 固态硬盘(SSD)
  • 寄存器 (Register)

局部性

  • 时间局部性
  • 空间局部性

编写高速缓存友好的代码

  • 优化局部性
  • 避免使用步长为$ 2^n $的访问方式

线性代数

矩阵的转置

  • 沿对角线翻折

行列式

  • 消元后主对角线乘积,或者递归求解
  • |A||B|=|AB|
  • 交换两行,行列式取反
  • 把一行乘以c加到另一行上,行列式不变

  • 下面都是什么玩意

数据压缩算法和通信问题

0x01 一些通信题

0x02 数据压缩算法

无损压缩

  • 主要用于文本压缩
  • 基于文本结构的压缩
  • 基于信息熵的算法

有损压缩

  • 主要用于图片压缩

信息熵

  • $ H=\sum -p_{i}\log{p_{i}} $
  • pi为每种字符出现的频率
  • aaaaaab与ab
  • 英语与汉语

压缩算法?

  • 游程编码
  • BWT
  • 哈弗曼编码
  • 算数编码
  • RAR
  • ZIP

图片压缩算法?

  • DFT
  • DCT
  • SVD

总结

  • 明天WC2017
  • gtmd
  • rp++

转载于:https://www.cnblogs.com/LoveYayoi/p/6745472.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值