【CSAPP读书笔记1】

我们都知道在计算机中一切信息都是由二进制码0010101010111之类的东西表示的。但是这一串01本身其实是没有任何意义的。只有通过各种编码算法encode起来才能给它赋予生命。

在学习计组的时候经常会需要拿出一段二进制编码进行分析。但是这一堆000111之类的写出来实在是太长了。。。。其实用十六进制就可以很简约地表示二进制,而且它们之间的转化异常简单。

比如:0x5F3759DF就对应二进制数 101 1111 0011 0111 0101 1001 1101 1111

仔细看看有什么规律呢~

首先我们给高位补上0:0101 1111 0011 0111 0101 1001 1101 1111

不难发现,在二进制中,每四位正好对应十六进制中的一位。

这也许就是计算机中很多十六进制编辑器的来源吧。比如编辑硬盘分区表的时候55 AA之类的东西,其实对应的也是一串二进制。

 

在计算机内存中,最小的寻址单位是一个byte。

字长是CPU一次能处理的二进制指令的长度。由字长也可以计算出内存最大寻址空间的大小。比如对于32bit CPU,最大寻址空间2^32=4294967296byte=4GB。这也就是32位机内存最大4GB的原因。(不过因为其他一些硬件还会占用一些内存资源,实际上可用的不到4G)

 

再回过头来看上面的这个式子:0x5F3759DF 对应二进制数 0101 1111 0011 0111 0101 1001 1101 1111

这一串数我们在纸上是从左到右自然写上的,那么在计算机内存中是怎么储存的呢?

这里有个有趣的小故事:

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。