【CSAPP】二、信息的表示和处理
三种重要的数字表示:无符号 、 补码 、 浮点数。
【一】信息存储
最小单位是字节, 在操作系统层面,只需要关注地址。系统将存储器空间划分为更可管理的单元,存放不同的程序对象(程序数据、指令、控制信息)
1、16进制表示法:用两个16进制字符表示一个字节,00 - FF。 练习:16进制、10进制、2进制的相互转换。
2、字: 字长决定虚拟地址空间的最大大小。32位计算机虚拟地址空间为 2^32个,即4GB
3、数据大小:整数short2/int4/long一字/longlong8,浮点数float4/double8, char1, char *一字
4、寻址和字节顺序:多字节对象的规则:地址+如何排列。
小端法:前面的地址存放小的位,后面的地址存放大的位、大端法相反
可能用到的场景:1、网络传输二进制数据。2、反汇编:从指令字节级表示到汇编程序 3、强制类型转换
5、表示字符串:结尾为0x00(null, ascii码为0),文本数据比二进制数据平台独立性更好
6、表示代码:二进制编码不兼容。
7、c中位运算:~ | & ^,常见用法:自己与自己做异或,得到的是自身。掩码运算。
8、c中逻辑运算:&& || !,
9、c中移位运算:左移 << 右移:
逻辑右移:左端补0
算术右移:左端补最高位,
无符号数据是逻辑右移,有符号数据,算数右移。
【整数表示】

有符号数第一位是负的 2^(n-1),
有符号和无符号的切换:

c中有符号数和无符号数运算,有符号数自动转换为无符号数!
这一点很坑,最好的解决方法是永远不用无符号数。
扩展数字的位表示:无符号零扩展,有符号符号扩展(类似逻辑右移)
【整数运算】
1、无符号加法:

2、有符号加法:

3、补码的非

4、无符号乘法

5、补码乘法

高位不一致,低位是相同处理方式的。
6、乘以常数:乘法运算通常需要10个以上时钟周期,但是乘以常数可以通过移位和加法运算来代替。
例如:14 = 2 + 2^2 + 2^3,那么x*14 = (x << 3) + (x << 2) + (x<<1)
7、除以2的幂:逻辑右移、算术右移 + 偏置(之后再看)
【浮点数】
IEEE标准
1、二进制小数:与十进制小数机制类似
2、IEEE浮点表示:sign + exp + frac:
exp: 无符号数 - 偏置量 (偏置量为 2^(k-1) -1 )
float: 1 + 8 + 23
double: 1 + 11 + 52

3、舍入与浮点运算(待填坑)
【CSAPP】二、信息的表示和处理的更多相关文章
- CSAPP =2= 信息的表示和处理
思维导图 预计阅读时间:30min 阅读书籍 <深入理解计算机系统 第五版> 参考视频 [精校中英字幕]2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频 参考文章 ...
- CSAPP:信息的表和处理2
CSAPP:信息的表和处理2 关键点:浮点数.浮点数运算. 二进制小数IEEE浮点数表示浮点数转换(单精度)参考 二进制小数 形如表示的二进制数,其中每个位的取值范围位0和1.这种表示方式的定义如 ...
- CSAPP:信息的表和处理1
CSAPP:信息的表和处理1 关键点:寻址.内存.磁盘.虚拟地址.物理地址.整型数组. 信息存储中的几个概念整型数据类型无符号数有符号数几个概念有符号数与无符号数之间转换基于栈与基于寄存器的区别 信息 ...
- 微信公众号平台开发(二)信息的分类.md
在上一篇博客中,我们只是简单地与微信服务器建立了连接,接下来就是从微信服务器中接收信息了.在SecurityController中,我定义了两个方法(get和post).Get方法是我们用来与微信服务 ...
- CSAPP 2-1 - 信息的存储
目录 0 基础概念及摘要 1 信息存储 1.1 十六进制表示法 1.2 字数据大小 1.3 寻址和字节顺序 0 基础概念及摘要 (1) 基础概念: 现代计算机存储和处理的信息以二进制信号表示 -- 0 ...
- 实用maven笔记二-信息&依赖管理
目前我经历的公司的主要项目管理工具都是maven,maven除了是一个实用的构建工具外,也是一个功能强大的项目管理工具.其管理功能分为信息管理和依赖管理.通过pom.xml文件实现. 信息管理 信息管 ...
- JavaSE(二) 关键字、标识符、注释
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1关键字与标识符 1.1 java关键字的使用 定义:被Java语言赋予了特殊含义,用做专门用途的字符串 ...
- JAVA collection集合之 扑克牌游戏
主要内容:这里使用collection集合,模拟香港电影中大佬们玩的扑克牌游戏. 1.游戏规则:两个玩家每人手中发两张牌,进行比较.比较每个玩家手中牌最大的点数,大小由A-2,点数大者获胜.如果点数相 ...
- Office Visio简介
Office Visio,是VISIO公司在91年推出的用于制作图表的软件(现在微软收购),在早期它主要用作商业图表制作,后来随着版本的不断提高,新增了许多功能.大多数图形软件程序依赖于艺术技能.Of ...
- Linux渗透+SSH内网转发
http://www.jb51.net/hack/58514.html http://blog.chinaunix.net/uid-756931-id-353243.html http://blog. ...
随机推荐
- 第四课 Makefile文件的制作(下)
1序言: 前面一节课讲解了Makefile的基础知识包括原理.预定义以及命令格式,这样是可以完成一个自动编译的文件,这些知识可以帮你完成.想想mak真是强大啊,可能有些同志发现了如果项目文件太多每个目 ...
- JAVA垃圾回收笔记
一.分析GC日志 /** * @author : Hejinsheng * @date : 2019/1/18 0018 * @Description: 模拟FULL GC/YOUNG GC * -X ...
- shell sed 命令
1:行首空格 sed 's/^[ \t]*//g' 2:行末空格 sed 's/[ \t]*$//g' 3,删除行首的空格或TAB,并删除<tr>.cat poem2id.txt | ...
- 20145217《信网络对抗》逆向与BOF基础实践
20145217<信网络对抗>逆向与BOF基础实践 内容: 一.简单机器指令,汇编语言 1.'objdump -d xxx|more'反汇编命令查看机器代码,'cat'显示文件内容,'xx ...
- 20145219 《Java程序设计》第07周学习总结
20145219 <Java程序设计>第07周学习总结 教材学习内容总结 认识时间与日期 时间的度量 1.格林威治时间(GMT):通过观察太阳而得,因为地球公转轨道为椭圆形且速度不一,本身 ...
- APPIUM API整理(python)---元素查找
最近在学习自动化框架appium,网上找一些API相关资料整理了一下 1.find_element_by_id find_element_by_id(self, id_): Finds element ...
- iOS开发进阶 - 使用Carthage管理iOS第三方库
移动端访问不佳,请访问我的个人博客 最近在研究Swift,一不小心发现一个好的的管理iOS第三方库Carthage,就跟第一次使用CocoaPods时一样兴奋不已,在研究了大半天后终于能用了,使用起来 ...
- C++ 之虚函数的实现原理
c++的多态使用虚函数实现,通过“晚绑定”,使程序在运行的时候,根据对象的类型去执行对应的虚函数. C++ 之虚函数的实现原理 带有虚函数的类,编译器会为其额外分配一个虚函数表,里面记录的使虚函数的地 ...
- 深入理解MR1与MR2的执行流程
摘自:Tom White ,<Hadoop.The.Definitive.Guide.3rd.Edition> MR1 MR2
- java拷贝指定文件夹下的指定文件类型
例如:把C:\Windows\SysWOW64下的所有dll文件拷贝到C:\Users\Administrator\Desktop\64dll这个目录 package com.xiaostudy.co ...