码迷,mamicode.com
首页 > 移动开发 > 详细

【CSAPP读书笔记1】

时间:2015-03-07 22:32:36      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

我们都知道在计算机中一切信息都是由二进制码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

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

这里有个有趣的小故事:

 

【CSAPP读书笔记1】

标签:

原文地址:http://www.cnblogs.com/pdev/p/4320954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!