BIN专题(部分)
大端序(bit-endian),小端序(little-endian)
计算机领域中字节数据在计算机内存中存放的顺序,有大端序,小端序
小端序:数据的高位字节存放在地址的高端 低位字节存放在地址低端
eg:int 0x12345678
地址 数据
0x30 78
0x31 56
0x32 34
0x33 12
大端序:数据的高位字节存放在地址的低端 低位字节存放在地址高端
eg:int 0x12345678
地址 数据
0x30 12
0x31 34
0x32 56
0x33 78
使用的大端序还是小端序与硬件层面有关,如常见的Intel x86就是小端序,与编程语言是没有关系的。而且单字节数据一般来说储存顺序是无所谓的,字符类型char 就会从低端往高端储存:
- ‘abc’ -> 97 98 99 00(字符串结尾)
但是int,short,long之类的类型就要考虑储存的顺序。
栈(stack)
这个栈不是自己建立的栈(线性表),是程序运行时,暂时存储参数的结构。
栈的特性
1.先进后出,后进先出
2.从高地址向低地址延伸
栈的用处
1.暂时保存变量
2.调用函数是传递参数
3.保存函数返回地址
###swap()函数中的栈使用情况分析
C语言代码:
include<stdio.h>
void swap(int *a,int *b)
{
int c=*a;
*a=*b;
*b=c;
}
void main()
{
int a=0,b=1;
swap(&a,&b);
printf("%d %d",a,b);
}
分析:
一开始将a=0,b=1压入栈。
运行到swap()
经过c=a;a=b;b=c;的操作以后,地址交换。
所以a,b指向的值也交换了。