2020-08-24 基础复习1

1. 冯诺依曼体系结构

2. 如何理解内存

一个大走廊 每个房间1字节

房间门牌号>“地址”

3. 内存和外存

(1) 内存支持随机访问能力,访问某个地址的开销差不多

          外存也支持随机访问能力,但程度不如内存,访问开销比顺序访问开销大

(2) 内存存储空间小

          外存存储空间大

(3) 内存访问速度快 (内存快3--4个数量级,几千倍)

          外存访问速度慢

(4) 内存成本高

          外存成本低

(5) 掉电时, 内存数据丢失, 外存数据还在

4. C语言中变量类型

(1) 整数类型(char, int, short, long, long long,...)

(2) 浮点数类型(float, double)

(3) 指针类型(char*, int*)

(4)结构体

如何通过调试查看内存

字节序:

(小端字节序) 数字的低位存到内存的低地址上

(大端字节序) 数字的低位存到内存的高地址上 (和数学上的方式一致)

如何判断是大端还是小端字节序?

查看这个整数的最低地址的一个字节,小端返回1, 大端返回0.

int IsLittleEnd() {
	int num = 0x11223344;
	int* p = #
	char* p2 = (char*)p;
	if (*p2 == 0x44) {
		return 1;
	}
	return 0;
}

int* p = &num              此处的 * 和int是一个整体, 组成(int*) 类型

printf("%d", *p)            此处的 * 是解引用操作, 根据指针变量中存储的地址找到对应的内存中的值.

 

关于负整数在内存中的存储: 符号位

int 既能表示正数也能表示负数, 最高位是符号位 ( 0表示正数, 1表示负数)

unsigned int 只能表示正数

计算机中存储方式为补码 (让硬件实现更简单)

原码符号位不变, 取反+1 得到补码

补码符号位不变, 取反+1 得到原码

 

%d: 打印一个有符号十进制的整数.

char 是一个字节得变量, 当按照 %d 打印时, 就会把 char 隐式转换为 int 类型的变量, 然后再打印.

%u: 打印一个无符号的十进制整数.

%f: 打印 float 和 double 类型的数据

%p: 打印指针变量(打印的是一个地址) 

unsigned 类型的变量尽量不要用! 容易出现问题, 尤其是不同类型转换时.

 

类型转换 char => int => unsigned int

高位填充符号位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值