CSAPP——2.1信息存储

1.十六进制表示法
2.字长:指针数据的标称大小,也是虚拟地址空间的最大大小(如32位字长限制4GB)
3.寻址和字节顺序:
0 对于多字节的程序对象,1要确定对象地址是什么,2要确定再内存中是如何排列这些字节的
0 ——一般多字节对象被存储于连续字节序列,对象地址为所用字节中的最小地址
0 ——排列方式有两种:小端模式(低位再前面(安卓、ios等))、大端模式(高位再前面)
0 ——0 问题1:小端法机器发数据至大端法机器,数据反过来
0—— 0 解决1:网络应用程序的代码编写遵守已建立的规则,小端机->网络标准->大端机
0—— 0 问题2:阅读表示整数数据的字节序列时,常发生于检查机器级程序时(如反汇编器生成的汇编)
0—— 0 问题3:编写规避正常的类型系统的程序时(数据转换)
4.字符串的表示:ASCII码表示,最后的终止字节0x00
5.代码的表示:二进制代码是不兼容的,从机器角度看,程序仅仅只是字节序列
6.布尔代数:~(NOT、﹁)、&(AND、Λ)、|(OR、∨)、^(异或、㈩)
7.C语言中的位级运算:十六进制转换为二进制并执行二进制运算,然后再转换回十六进制
0 交换位置(a,b):a=a^b;b=a^b;a=a^b;
0 掩码运算:0xFF&x表示只取x的最低的8位(~0可生成一个掩码)
0 x为int类型:x^(-x)表示取x有一的最低位
0 |有1即为1 &有0即为0
8.C语言中的逻辑运算:||、&&、!(||和&&若左边式子可确认结果,则不运算右边式子)(1True、0False)
9.C语言中的移位运算:
0 (左移:丢弃最高k位,右边补0) (逻辑右移:右移k位,左边补0) (算术右移:右移k位,左边补最高有效位的值)
0 unsigned只有逻辑右移,几乎所有的编译器/机器组合对有符号数都使用算术右移
0 Jave中(>>:算术右移) (>>>:逻辑右移)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值