《深入理解计算机系统》阅读笔记二

信息的存储

存储位置的表示方法,例如c语言里面的指针地址的表示方法。

十六进制表示法,c语言里以0x或者0X开头的数字常量被认为是十六进制的值,而字符“A”-“F”表示10-15

字:字长是整数和指针数据的大小,决定了虚拟地址空间的最大大小,大多数的计算机的字长都是32位的,所以他的虚拟地址空间最大为4千兆字节,也就是4gb,当然也有了一些64位的机子,所以系统会考虑这两种字长的兼容问题,或者说要做取舍

数据大小:不同字长的机器对于不同的数据类型的大小给的字节数是不一样,比如:int类型,32位给4,64位也是4,而long int类型,32给的是4、64位给的就是8

寻址和字节顺序:跨越多字节的程序对象在寻址的时候要考虑两个因素:地址和排列方式。例如:变量x的类型是int类型,地址是0x100,那么x的4个字节就存储在0X100,0X101,0X102,0X103位置上。排序方式有大端法和小端法,如果x的十六进制值是ox01234567,可以演示为下图

《深入理解计算机系统》阅读笔记二_第1张图片

排序方式的不同有时可能会成为问题,比如网络间的二进制数据传输要遵守相同的字节顺序规则这样接收和发送的数据才不至发生反序。

表示字符串:c语言中字符串是一个以NULL字符结尾的字符数组。每个字符都有标准编码表示,比如:ASCII字符码。

表示代码:计算机系统的一个基本概念就是从机器的角度来看,程序仅仅是字节序列。比如C语言的求和函数,init sum(int x,int y){return x+y;}编译后生成的机器代码windows下是55 89 e5 8b 45 0c 03 45 08 5d c3,而linux32下是55 89 e5 8b 45 0c 03 45 08 c9 c3

以上就是信息的表示方法,发现每一次阅读,同样的内容都有不一样的理解。

你可能感兴趣的:(《深入理解计算机系统》阅读笔记二)