结构体 字节对齐的练习
分析结构体大小struct S1{char c1;double d;char c2;char c3;};struct S2{char c1;char c2;char c3;double d;};struct S3{char c1;S1 s;char c2;char c3;};分析结构体大小#prag
分析结构体大小struct S1{char c1;double d;char c2;char c3;};struct S2{char c1;char c2;char c3;double d;};struct S3{char c1;S1 s;char c2;char c3;};分析结构体大小#prag
结构体数组的定义类型 变量名[常量表达式];//定义结构体类型struct stStudent{ int Age; int Level;}//定义结构体变量struct stStudent st;//定义结构体数组struct stStudent arr[10];//或者stStuden
#includechar x;short y;int check(){ x =1; y=2; return 0;}int main(int argc, char* argv[]){ check(); system("pause"); retur
思考:当需要一个容器能够存储1个字节,你会怎么做? //char当需要一个容器能够存储4个字节,你会怎么做? //int当需要一个容器能够存储100个2个字节的数据,你会怎么做? //short arr[100]当需要一个容器能够存储5个数据,这5个数据中有1字节的,2字节的有10字节的。。。你会怎
int x = 123; //补码int float f = 123.4F; //IEEE编码int i = "A"; //神马情况???我们在代码中写入int i = "A";反编译后汇编就编程了mov dwo
计算机只认识0和1,计算机能做的运算归根结底也就是直接对0和1做运算(通常称为 位运算)与运算两个位都为1时,结果为1 and(&)或运算只要有一个为1 就是1 or(|)异或运算不一样的时候是1 xor(^)非运算(单目运算)0变1 1变0 not(~)左移各二进制位全部左移若干位,高位丢
数据宽度因为计算机受硬件制约,数据都是有长度限制的(数据宽度),超过最多宽度的数据会被丢弃计算机中常见的数据宽度:位(BIT) -> 一个0或1字节(BYTE) =8位 范围 0-> FF字(Word) = 16位 0->FFFF双字(DoubleWord) = 32位 0-FFF
什么是堆栈程序启动的时候操作系统会给每个程序一块虚拟的4G内存当程序需要使用的时候必须要和操作系统申请内存堆栈是程序的心脏,程序中需要用到的重要数据,都在堆栈中体现就是一块特殊的内存,操作系统在程序启动的时候已经分配好的,供程序执行时使用和数据结构的堆栈无关查看堆栈正常内存使用从小地址往大地址使用,
寄存器数量和容量有限,为了存储大量数据,所以我们需要内存每个程序都会有自己的独立的4GB内存空间(这里的内存其实是虚拟的,并不是真的给了程序4G内存,当程序读或者写这段内存的时候,操作系统才会把使用的内存映射到物理内存上物理内存和内存条之间还有一层映射1Bit 就是一个位 也就是可以存储1个0或者1
标志寄存器 EFLEFL是32位寄存器其中的每一位,含义都是不同的0x00000246 16进制0000 0000 0000 0000 0000 0010 0100 0110 二进制第十位(从下标开始算 从右往左):DF位DF位为``的时候: MOVS 执行完毕之后 ESI和EDI的值会增加DF位位