Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3041528
  • 博文数量: 167
  • 博客积分: 613
  • 博客等级: 中士
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-13 21:35
个人简介

人, 既无虎狼之爪牙,亦无狮象之力量,却能擒狼缚虎,驯狮猎象,无他,唯智慧耳。

文章分类
文章存档

2015年(19)

2014年(70)

2013年(54)

2012年(14)

2011年(10)

分类: C/C++

2011-09-26 15:38:20

终于开始了学习《深入理解计算机系统》的旅程,路漫漫其修远兮!
今天开始看“系统”的程序结构和执行部分,现简要的总结一下学到的东西。
基本认识
计算机中的信息都是二进制位表示,我们赋予不同的位模式以不同的含义从而表示区分出不同的信息。基本的数字表示分为整数和浮点数。整数又有unsigned和two's-complement两种表现形式,分别对应非负数和补码整数(正负)。值得注意的是浮点数尽管有更大的表示范围,但却只是数学值的近似表示。
$2.1 信息存储
机器级的程序将计算机中的所有存储器(RAM,显存等)都视为整体的虚拟存储器,存储单元为一个字节(8bits),系统为每一个字节分配一个数字作为其地址。指针变量中存储的就是这样一个地址。
a.位模式的表示:十六进制
用十六进制来表示一个字节是非常方便的,可以简洁明了的表示出每个二进制位上的情况。熟悉二进制-十六进制-十进制间的互相转换。特别留意:1)A-1010 C-1100 F-1111 2)2^n=100……00
b.字长(word size)
现在终于明白了为什么会有字长这种东东,因为每台计算机都有一个字长,指明整数(long)和指针数据(pointer)的标准大小。最重要的是系统参数中的虚拟空间地址就是一个字长来编码的。所以字长直接决定了系统所支持的最大虚拟地址的范围。
c.寻址和字节顺序
1)当系统存储一个多字节对象时,必须解决两个基本的问题:一个是这个对象要如何在内存中组织存储,另一个是如何确定这个多字节对象的地址。计算机系统采用连续的字节序列来存储多字节对象,取用这个多字节对象的最小字节地址作为其对象地址。
2)存储多字节对象时,按照存储数据高位和低位有效字节顺序的不同可以分为小端法(Inter)和大端法(IBM&Sun Microsystems)
3)字节顺序可见的三种情况:
   01.网络传输时,为了是大端法和小端法的机器可以互相通讯,必须中间采取转换成标准形式作为媒介
   02.阅读表示整数数据的字节序列时字节顺序就显得很重要了(如使用反汇编器时),此时应当先确定使  用的CPU类型或者确定大端法或者小端法
   03.通过强制类型转换显示一个多字节对象的每一个字节的值时
d.位运算
1)位级运算: a|b, a&b, a^b, ~a
2)逻辑运算:a||b, a&&b, !a    value:  ~0-true(0),  0-false(0)
3)移位运算
   01.左移运算——右端补0
   02.右移运算——
        逻辑运算:左端补0
        算术运算:左端补最高有效位:0  or  1


阅读(2595) | 评论(4) | 转发(0) |
0

上一篇:没有了

下一篇:20110926(续)

给主人留下些什么吧!~~

windhawkgyang2011-10-04 12:23:46

hiwoody: 恭喜啊.....
3Q

hiwoody2011-09-28 00:01:44

恭喜啊

windhawkgyang2011-09-26 21:49:19

了解

teee_u2011-09-26 16:42:14

加加速,这个速度太慢了