CSAPP学习笔记(第二章 信息的表示与储存)

本文介绍了信息的十六进制表示法,包括二进制与十六进制、十进制与十六进制的转换,并讨论了字数据的大小,如字长对程序的影响。此外,还探讨了寻址、字节顺序(小端法与大端法)以及在不同系统间的兼容性问题。最后,文章提到了C语言中的位级运算、逻辑运算和移位运算在信息表示中的应用。
摘要由CSDN通过智能技术生成

2.1 信息储存
2.1.1十六进制表示法
这一节主要讲的是二进制、十进制和十六进制之间的相互转换
①十六进制——>二进制
例:Ox173A4C

1 7 3 A 4 C
0001 0111 0011 1010 0100 1100

二进制表示:000101110011101001001100
(16=2的4次方,十六进制一位的值与二进制四位的值相对应,自己的理解)

②二进制——>十六进制
例1:1111001010110110110011
11,1100,1010,1101,1011,0011
(从右到左以4个位一份,最后一个补零)

0011 1100 1010 1101 1011 0011
3 C A D B 3

十六进制表示:Ox3CADB3

例2:2的11次方
2的11次方
=2的3次方X2的8次方
=8X16的2次方
=Ox800
十六进制表示:Ox800

③十进制——>十六进制
例:314156
314156/16=19634余 12
19634/16=1227余 2
1227/16=76余 11
76/16=4余 12
4/16=0余4
十六进制表示:Ox4CB2C

④十六进制——>十进制
例:Ox7AF
7X16的2次方+10X16+15=1967
十进制表示:1967

书中句子:
二进制表示法太过冗长,而十进制表示法与位模式的相互转化很麻烦。替代方法是,以16为基数,或者叫十六进制数,来表示位模式。

2.1.2字数据大小
1、字长:指针数据的标称大小。
对于一个字长为w位的机器而言,虚拟地址的范围为 0~2的w次方-1 ,程序最多访问2的w次方个字节。
2、“32位程序”与“64位程序”的区别在于该程序是如何编译的,而不是其运行的机器类型。(32位程序可以在32位和64位的机器上运行,而64位的程序只能在64位机器上运行。)
基本数据类型占用的字节长度受程序是如何编译的影响而变化,下图给出的是32位和64位程序的典型值

IOS C99引入了一类数据类型,其数据大小是固定的,不随编译器和机器的设置而变化。(int32_t和int64_t所占用字节分别为4和8)
32位的程序在转移到64位的机器上时会显现出许多隐藏的对字长的依赖性问题
例如:在32位程序里一个声明为int类型的程序对象,被用来储存一个指针。在32位机器的时候是可以的,一移植到64位机器就会有问题。对比字节数发现64位int只有4个字节,而char有8个。
2.1.3 寻址和字节顺序
1.多字节对象的储存:几乎在所有的计算机上,多字节对象都被存储为连续的字节序列,对象的地址为所用字节中最小地址。
2.字节顺序(小端法,大端法)
小端法——最低有效字节在最前面的方式。
大端法——最高有效字节在最前面的方式。
例:int类型x=Ox01234567存储在地址为Ox100处,则

地址 Ox100 Ox101 Ox102 Ox103
小端法 67 45 23 01
大端法 01 23 45 67

(一个字节8位,2的8次方=16的2次方,所以每个地址可以存放十六进制的两个数)
一旦选择了特定的操作系统,,那么字节顺序也就固定了下来。
3.需要注意字节顺序的三种情况。
(1)小端法机器与大端法机器产生的数据在互相传送时,字里的字节会发生反序的问题。
解决:网络应用程序的代码编写必须遵循已建立的关于字节顺序的规则,以确保发送方机器将其内部表示转换成网络标准,而接收方机器则将网络标准转化为它的内部表示。
(2)阅读表示整数数据的字节序列时字节顺序也很重要。
文中示例:
针对Intel x86-64处理器的机器级代码表示:
4004d3:01 05 43 0b 20 00 add %eax,Ox200b43(%rip)
解释:01 05 43 0b 20 00是一条指令的字节级表示,这条指令是把一个字长的数据加到一个值上,该值的存储地址Ox200b43加上当前程序计算器的值得到,当前程序计数器的值即为下一条将要执行指令的地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值