《深入理解计算机系统》·深入浅出·快速理解第2章(3日完稿)

Posted kikokingzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《深入理解计算机系统》·深入浅出·快速理解第2章(3日完稿)相关的知识,希望对你有一定的参考价值。

🌕写在前面


  • 🍊博客主页:kikoking的江湖背景
  • 🎉欢迎关注🔎点赞👍收藏⭐️留言📝
  • 🌟本文由 kikokingzz 原创,CSDN首发!
  • 📆首发时间:🌹2021年11月16日🌹
  • 🆕最新更新时间:🎄2021年11月16日🎄
  • ✉️坚持和努力一定能换来诗与远方!(向未见花闻学习)
  • 📠参考书籍:📚《深入理解计算机系统》
  • 🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢感谢感谢!

✨✨✨我是分割线✨✨✨

2.1信息存储


·大多数计算机采用8bit的字节作为最小的可寻址的内存单位,而不是bit。

所以我们常说的32为机器,其地址为32位,但一个地址序列只存储1字节,注意单位是字节

1.虚拟内存

·机器级程序将内存视为一个非常大的字节数组,所有可能地址的集合就称为虚拟地址空间

2.机器级层面 程序就是字节序列

·C编译器维护数据类型的信息,但是其生成的机器级程序并不包含关于数据类型的信息;每个程序对象被视为一个字节块,程序就变为一个字节序列

✨✨✨我是分割线✨✨✨

🔥2.1.1·采用十六进制数表示位模式

·因为二进制表示法太冗长

·十进制表示法与位模式的互相转化很麻烦

 ·掌握:进制转换

✨✨✨我是分割线✨✨✨

🔥2.1.2·字数据的大小


1.每台计算机都有一个字长(32位机器/64位机器),指明指针数据的标称大小

2.32位字长的内存(虚拟地址空间)为4GB

​​​  由此计算可得32位字长的机器内存位4GB


 3.数据类型的大小

✨✨✨我是分割线✨✨✨

🔥2.1.3寻址和字节顺序


1.多字节对象的地址为所使用字节(内存单元序号)中字节最小的地址


 2.字节顺序

·大端法:最高有效字节在最前面的方式

·小端法:最低有效字节在最前面的方式

 ·双端法:可以配置作为大端或者小端的机器运行

🔥2.1.4表示字符串


1.C语言中字符串被编码为一个以null(其值为0)字符结尾的字符数组

2.每个字符都由某个标准编码来表示,最常见的就是ASCII码

3.文本数据比二进制数据具有更强的平台独立性

·因为在使用ASCII作为字符码的任何系统上都将得到相同的结果,与字节顺序和字节大小无关(即无关大小端机器,输出结果相同)

🔥2.1.5表示代码


·即使是完全一样的进程,运行在不同的操作系统上也会有不同的编码规则;即二进制代码是不兼容的,很少能在不同机器和操作系统间进行移植。

·机器级角度看来,程序只是字节序列,是不知道关于原始源程序的任何信息的

🔥2.1.6布尔代数


·布尔通过将逻辑值 TRUE 和 FALSE 编码为二进制值1和0,设计出布尔代数

·掌握:计算

🔥2.1.7C语言中的位级运算


·C语言支持按位布尔运算


·例题1:如何不应用外部变量来交换向x、y的值

 ·例题2 掩码运算

举例:掩码0xFF(最低的8位为1)表示一个字的低位字节

·位级运算 x&0xFF 生成一个由x最低有效字节组成的值,而其他字节被置为0

·x=0x89ABCDEF     ;   x&0xFF=0x000000EF

我们应当熟练掌握位级运算,在编程时可以大大提高代码的效率

🔥2.1.8C语言中的逻辑运算 


·C语言中还提供来一组逻辑运算符||、&&、! 分别对应于命题逻辑中的OR、AND、NOT运算

·逻辑运算认为所有的非零参数都表示TRUE,而参数0表示FALSE

·它们返回1或者0,分别表示TRUE和FALSE

·短路特性

·如果对第一个参数求值就能确定表达式对结果,那么逻辑运算符就不会对第二个参数求值

·超级好的例题 

🔥2.1.9C语言中的移位运算 


·左移

·(我觉得这段CSAPP讲的没有很难懂,就直接拷贝了)


 ·右移

·逻辑右移:补0(无符号数必须逻辑右移)

·算术右移:补最高位(基本上对有符号数使用算术右移)


·很好的例子

 

以上是关于《深入理解计算机系统》·深入浅出·快速理解第2章(3日完稿)的主要内容,如果未能解决你的问题,请参考以下文章

《深入理解计算机系统》·深度挖掘第2章·第二话

《深入理解计算机操作系统》

第1章 计算机系统漫游(深入理解计算机系统)

深入理解计算机系统的目录1

速读《深入理解计算机系统(第三版)》总结

深入理解计算机系统第一章