-
-
[原创]《C++反汇编与逆向分析技术揭秘》看书笔记,分享给大家,希望有大神多多点评...
-
发表于:
2014-5-26 16:57
18704
-
[原创]《C++反汇编与逆向分析技术揭秘》看书笔记,分享给大家,希望有大神多多点评...
基本数据类型的表现形式
一、整数类型
byte:8位
short:16位
int:32位
long:64位
无符号整数: 直接存储其值,高位存储在高地址内存,低位存储在低地址内存
有符号的整数:最高位为符号位,0表示正数,1表示负数
负整数存储,其绝对值反码加1
负整数真值,反码加1
二、浮点数
float:32位,最高位符号位,23-31位指数部分,0-22科学记数法的尾数部分
double:64位,最高位符号位,42-63位指数部分,0-41科学记数法的尾数部分
浮点数小数部分二进制转换:乘2取整 F=0.65
0.65×2=1.3 取1
0.2×2=0.4 取0
0.4×2=0.8 取0
0.8×2=1.6 取1
0.6×2=1.2 取1
........................... 直到结果=1依次从上到下取出所得结果:10011.......。
浮点数内存编码:如 12.25
1、求出浮点数绝对值的二进制编码 1100.01
2、移动小数点使其整部分为1,结果1.10001,小数点移动了3位
3、符号位0,
指数位:小数点移动了3位,十进制3+127(如果是double +1023),转换二进制10000010
尾数部分:步骤2所移动以后的小数部分10001,不足23(如果是42位)位,低位补0
4、结果:0100000101000100000000000000000B=0x4144000000
浮点数有专门的指令和寄存器
三、字符字符串
ASII:占8位,char, 由0~255之间的数字组成,以占一个字节'\0'作为结束标识
Unicode:占16位,wchar_t,由0~65535之间的数字组成,以占两个字节的 '\0'作为结束标识
四、布尔类型
占8位,bool,一个字节,只有两个值0,1。
五、地址、指针、引用
地址:标号用十六进制表示,取一个变量的地址“&”符号,只有变量才有地址,宏、常量没有地址(不包括const定义的)。
指针:用于存放地址的一种数据类型,int *pn,指针变量同样可以取出地址 &pn。
引用:引用不可以单独定义,并且定义时就要初始化,表示一个变量的别名,
依赖于初始化的变量 int mum,int &ynum=mum。
指针和引用存放的都是一个32位的无符号整数,该整数对应某个内存地址
6、常量、#define、const
常量和#define 没有地址
#define 编译器进行编译时,会将其替换成相应的常量
const有编译器判断实现的常量,是一个假常量,最终还是一个变量,只是才编译器内进行了检查,发现有修改则报错
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课