将信息表示为bits

Everything is bits

每个bit是0或1

为什么选用bit?这是因为电子的实现

  • 容易存储可以比特的元素
  • 抗干扰能力强(比如电路中存在噪声或者其他干扰)

因此数字信号比模拟信号更好。

用二进制计数的举例

解析Byte

布尔代数

用布尔代数实现位运算

用bit表示集合

注意&&与&、|与||的区别,&&与||是判断条件的真假,(Bryant提到即使是有经验的C语言程序员也经常犯错!)

bit操作

位移操作

逻辑左移:将所有的bit位向左移位,右边填充0

逻辑右移:将所有的bit位向右移位,左边填充0

算术右移:将所有的bit位向右移位,左边填充1

Integers

解析Integer

首先数字分为无符号数(unsigned)和补码(Two's Complement)两种类型,我记得大三学习微机的时候国内教材说的是原码补码反码。

数字范围

Conversion,Casting

原码与补码之间的映射:

我们可以发现其实无符号数和有符号数是存在一定映射关系的。

Casting Surprises

当两个数字作比较的时候,如果两个数都是补码,那么就补码进行比较,但是一旦有一个是原码,那么另一个都会由上面的映射关系转换成原码。用(int)放在原码前面是将原码强制转换成补码比较。


这里老师还讲了一个性质 -x=~x+1 

Expanding, truncating

符号扩展Sign Extension

给定:w位整数x 要求将其扩展到w+k位同样大小的整数

规则:复制k个符号bit,将其放置于原X符号位前

举例

Truncation

给定:k+w位原码或者补码的整数X 要求转换成k位同样大小的X

规则:扔掉头部k位bit(这里我有点困惑,因为按照下面的例子,做的是mod)

其中分为有符号位变化和无符号位变化,第一种无符号位变化,value是不会变的,但是第二种有符号位变化,value我们可以看到发生了改变。

Addition, negation, multiplication, shifting

  • 无符号数相加溢出(overflow)后,结果为:对数取此时对应位数值的模。比如 11101001 +11010101 = 1 10111110(446)溢出 此时只剩10111110(190)  190=446%256

下面是slides上面一个补码的相加(补码一般就是用来表示有符号数)溢出的情况。

老师给的例子是 1101(-3)+1010(-6) 此时相加结果为 1(drop) 0111(7)为负数加负数得到了正溢出,此种情况之后讨论。

Multiplication

无符号数相乘

无符号数相乘,当结果为2w个bit时候,我们会舍弃掉高位的w位bit,只留下w位。

标准乘法运算

  • 忽略高位w个bit

实现模运算功能Implements Modular Arithmetic

有符号数相乘

标准乘法运算

  • 忽略高位w个bit
  • 跟无符号数比较,有一些和有符号数是不同的
  • 低位的bit是一样的

移位乘2法

将所有的bit position左移相当于把数字乘2

移位除2法

对于无符号数:将所有的bit position右移相当于把数字除以2,结果向下取整。

对于有符号数:上面的做法再数字小于0的时候,会round向偏向负无穷的方向。

向右移位也是因此需要算术右移的情况。

在JAVA中,设计者将所有的情况都用补码来表示,他们觉得unsigned number会造成太多trikcy的情况!太wierd!

所以为什么我们会用Unsigned Number?

  • 使用modular arithmetic运算
  • 使用bits表示集合
  • 在系统编程里使用 (bit masks,device commands)

一些关于机器的单词

word size这个词实际上并没有太多的意义。32位的机器可以用来存储的地址规模是4GB,而64位机器一般用47位bit来存储地址。

Byte Ordering

主要是 Little Endian 和 Big Endian

这个概念在之前我学计网的时候也碰到了,一般在系统中用的都是Little Endian,转到网络中传输的时候需要把Little Endian转到Big Endian,到另一个终端的时候,再转为Little Endian。

后记:上这节课的时候感觉还是有一些地方听不太懂,很多概念方法在这里总结的可能也有很多问题。但是这毕竟是我自己一个学习笔记,肯定会有很多疏漏,(连大佬都经常会犯错呢)。写完整的学习笔记的话,之后我在找实习以及工作的时候应该也能拿出来翻一翻吹吹小牛逼,如果面试官也恰好上过这门课那还可以交流上课经验,哈哈哈,我真是个小机灵鬼。

CMU 15-213 Introduction to Computer Systems学习笔记(2) Bits,Bytes,Integer相关推荐

  1. Introduction to Computer Networking学习笔记(十五):Queue Model 包交换中的缓冲模型

    本章知识点比较零散,因此一篇文章进行总结,并且不具有连贯性,仅记录自己认为有价值的内容. 将较大的包拆分为小包进行传输,可以减小端对端延迟,原因如下图: 数据传输时,突发大量的数据包会增加延迟,简单周 ...

  2. CS269I:Incentives in Computer Science 学习笔记 Lecture 13:Introduction to Auctions(拍卖简介)

    Lecture 13 Introduction to Auctions(拍卖简介) 1 Preamble(前言) 为什么计算机科学家要关心拍卖?直到最近(甚至可能仍然),提到拍卖,我们脑海中联想到的图 ...

  3. CS269I:Incentives in Computer Science 学习笔记 Lecture 15 The VCG Mechanism(VCG机制)

    Lecture 15 The VCG Mechanism(VCG机制) 1 GSP vs VCG 作为本讲的开始,我们来证明上一讲中的一个重要结论: 回忆一下背景:有k个广告位,它们 的点击率排布为) ...

  4. CS269I:Incentives in Computer Science 学习笔记 Lecture 12 对称信息和声誉系统

    Lecture 12 Asymmetric Information and Reputation Systems(对称信息和声誉系统) 1 Preamble(前言) 之前的几讲,我们都在声誉系统的边缘 ...

  5. Coursera 机器学习 第9章(下) Recommender Systems 学习笔记

    9.5 Predicting Movie Ratings 9.5.1 Problem Formulation 推荐系统. 推荐系统的问题表述:电影推荐.根据用户对已看过电影的打分来推测用户对其未打分的 ...

  6. CS269I:Incentives in Computer Science 学习笔记 Lecture 17 评分规则和同辈预测(诚实预报和反馈激励)

    Lecture 17 Scoring Rules and Peer Prediction(Incentivizing Honest Forecasts and Feedback)(评分规则和同辈预测( ...

  7. POSEIDON: A New Hash Function for Zero-Knowledge Proof Systems 学习笔记

    1. 引言 Grassi等人2019年论文<POSEIDON: A New Hash Function for Zero-Knowledge Proof Systems>. 前序博客有: ...

  8. 概率导论(Introduction to Probability, 2E)学习笔记 Part Ⅰ

    笔记内容基于Introduction to Probablity, Second Edition 因笔者为初学者,故内容不会面面俱到 若有表述错误还望直接指出 --2022.1 样本空间与概率 本书的 ...

  9. Introduction to Materials Management 学习笔记--生产计划系统

    概述本章介绍了MPC(Manufacturing planning and control)系统.首先从总体上介绍一下,然后讲了生产计划的编制的一些细节(英文就是省事加个ing就能说明很多问题,本章在 ...

  10. Introduction to Materials Management 学习笔记

    搞了两三年AX,越来越困惑. 技术层面可以通过多读代码去解决大多数问题,毕竟AX里的那么多源代码是可以模仿的,加上AX本身是个很不错的开发平台,技术方面可能不需要太多时间就差不多可以应付了. 做AX最 ...

最新文章

  1. php.ini 文件织梦在哪,dedecms模板文件在哪
  2. video标签 在微信浏览器打开,不弹出大的独立窗口 而是直接播放。
  3. linux下的连接文件——软连接和硬连接的区别
  4. 【图数据库】Window下的安装Neo4j
  5. jzoj6308-中间值【分治】
  6. 拓端tecdat|决策树算法建立电信客户流失模型
  7. 小公司程序员怎么进大公司
  8. My Notes Keeper 注册码算法注册机
  9. cie规定的标准光源_标准光源概述_相关术语_所需条件-维库电子通
  10. 鸿蒙os适配机vivo型,originos系统适配机型有哪些
  11. java的高内聚和低耦合_彻底弄懂高内聚与低耦合
  12. S3C2450自动升级
  13. Windows系统提示应用程序无法正常启动(0xc0000142)解决方法
  14. Word 中出现公式不能编辑问题(兼容模式)
  15. 百度超级链作为专班核心成员 参与北京市政务区块链顶层设计
  16. 科学计算机 分数计算公式,Z分数(标准分数,Z-Score)公式与在线计算器_三贝计算网_23bei.com...
  17. HTML下拉框样式美化
  18. 【同济大学】考研初试复试资料分享
  19. 扫雷自定义最难C语言,C语言实现扫雷小游戏(扩展版可选择游戏难度)
  20. 超硬核,11个非常实用的 Python 和 Shell 脚本实例

热门文章

  1. 关闭(取消)windows 2003中ie增强的安全配置?
  2. wait()、notify()、notifyAll()原理用法详解sleep()与wait()区别
  3. java写法可能存在的 java.lang.OutOfMemoryError: Java heap space 问题
  4. MySql 5.7.2搭建主从(master/slave)复制
  5. Jquery 网站保存信息提示消息实现,提示后自动消失
  6. (六)mybatis-spring集成完整版
  7. case结构条件语句
  8. Unity与安卓开发的一些路径知识
  9. PVLAN(Private VLAN)在局域网中的应用
  10. linux 将文件打包、压缩并分割成制定大小