CMU 15-213 Introduction to Computer Systems学习笔记(2) Bits,Bytes,Integer
将信息表示为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相关推荐
- Introduction to Computer Networking学习笔记(十五):Queue Model 包交换中的缓冲模型
本章知识点比较零散,因此一篇文章进行总结,并且不具有连贯性,仅记录自己认为有价值的内容. 将较大的包拆分为小包进行传输,可以减小端对端延迟,原因如下图: 数据传输时,突发大量的数据包会增加延迟,简单周 ...
- CS269I:Incentives in Computer Science 学习笔记 Lecture 13:Introduction to Auctions(拍卖简介)
Lecture 13 Introduction to Auctions(拍卖简介) 1 Preamble(前言) 为什么计算机科学家要关心拍卖?直到最近(甚至可能仍然),提到拍卖,我们脑海中联想到的图 ...
- CS269I:Incentives in Computer Science 学习笔记 Lecture 15 The VCG Mechanism(VCG机制)
Lecture 15 The VCG Mechanism(VCG机制) 1 GSP vs VCG 作为本讲的开始,我们来证明上一讲中的一个重要结论: 回忆一下背景:有k个广告位,它们 的点击率排布为) ...
- CS269I:Incentives in Computer Science 学习笔记 Lecture 12 对称信息和声誉系统
Lecture 12 Asymmetric Information and Reputation Systems(对称信息和声誉系统) 1 Preamble(前言) 之前的几讲,我们都在声誉系统的边缘 ...
- Coursera 机器学习 第9章(下) Recommender Systems 学习笔记
9.5 Predicting Movie Ratings 9.5.1 Problem Formulation 推荐系统. 推荐系统的问题表述:电影推荐.根据用户对已看过电影的打分来推测用户对其未打分的 ...
- CS269I:Incentives in Computer Science 学习笔记 Lecture 17 评分规则和同辈预测(诚实预报和反馈激励)
Lecture 17 Scoring Rules and Peer Prediction(Incentivizing Honest Forecasts and Feedback)(评分规则和同辈预测( ...
- POSEIDON: A New Hash Function for Zero-Knowledge Proof Systems 学习笔记
1. 引言 Grassi等人2019年论文<POSEIDON: A New Hash Function for Zero-Knowledge Proof Systems>. 前序博客有: ...
- 概率导论(Introduction to Probability, 2E)学习笔记 Part Ⅰ
笔记内容基于Introduction to Probablity, Second Edition 因笔者为初学者,故内容不会面面俱到 若有表述错误还望直接指出 --2022.1 样本空间与概率 本书的 ...
- Introduction to Materials Management 学习笔记--生产计划系统
概述本章介绍了MPC(Manufacturing planning and control)系统.首先从总体上介绍一下,然后讲了生产计划的编制的一些细节(英文就是省事加个ing就能说明很多问题,本章在 ...
- Introduction to Materials Management 学习笔记
搞了两三年AX,越来越困惑. 技术层面可以通过多读代码去解决大多数问题,毕竟AX里的那么多源代码是可以模仿的,加上AX本身是个很不错的开发平台,技术方面可能不需要太多时间就差不多可以应付了. 做AX最 ...
最新文章
- php.ini 文件织梦在哪,dedecms模板文件在哪
- video标签 在微信浏览器打开,不弹出大的独立窗口 而是直接播放。
- linux下的连接文件——软连接和硬连接的区别
- 【图数据库】Window下的安装Neo4j
- jzoj6308-中间值【分治】
- 拓端tecdat|决策树算法建立电信客户流失模型
- 小公司程序员怎么进大公司
- My Notes Keeper 注册码算法注册机
- cie规定的标准光源_标准光源概述_相关术语_所需条件-维库电子通
- 鸿蒙os适配机vivo型,originos系统适配机型有哪些
- java的高内聚和低耦合_彻底弄懂高内聚与低耦合
- S3C2450自动升级
- Windows系统提示应用程序无法正常启动(0xc0000142)解决方法
- Word 中出现公式不能编辑问题(兼容模式)
- 百度超级链作为专班核心成员 参与北京市政务区块链顶层设计
- 科学计算机 分数计算公式,Z分数(标准分数,Z-Score)公式与在线计算器_三贝计算网_23bei.com...
- HTML下拉框样式美化
- 【同济大学】考研初试复试资料分享
- 扫雷自定义最难C语言,C语言实现扫雷小游戏(扩展版可选择游戏难度)
- 超硬核,11个非常实用的 Python 和 Shell 脚本实例
热门文章
- 关闭(取消)windows 2003中ie增强的安全配置?
- wait()、notify()、notifyAll()原理用法详解sleep()与wait()区别
- java写法可能存在的 java.lang.OutOfMemoryError: Java heap space 问题
- MySql 5.7.2搭建主从(master/slave)复制
- Jquery 网站保存信息提示消息实现,提示后自动消失
- (六)mybatis-spring集成完整版
- case结构条件语句
- Unity与安卓开发的一些路径知识
- PVLAN(Private VLAN)在局域网中的应用
- linux 将文件打包、压缩并分割成制定大小