内存
内存是计算机的一个重要组成部分(冯诺依曼体系中的重要组成部分)
1.如何理解内存
想象一个大走廊,走廊上有很多房间,每个房间大小是1字节,每个房间都有门牌号(从0开始递增)称为“地址”,指针专门用于保存地址的变量。
2.内存vs外存
内存支持随机访问能力,计算机访问内存上某个地址的数据开销很小,不管地址的编号是大还是小。 外存也支持随机访问的能力,但是支持程度不如内存,开销大很多。
内存存储空间小,外存比较大
内存访问速度快,外存比较慢(内存比外存快3-4个数量级)
内存成本高,外存成本低
如果掉电,内存数据丢失,外存不会丢失
字节序
1.小端字节序

2.大端字节序

小端字节序:数字的低位存储到低地址
通常使用大端字节序;
负整数在内存中的存储
int既能表示正数,又能表示负数(最高位为符号位,1表示负,0表示正),uunsigned int 只能表示正数,
计算机采用补码存储,补码=原码取反加一,正数原码反码补码相同,负数需要通过计算所得.
-10:1000 0000 0000 0000 0000 0000 0000 1010 原码
-10: 1111 1111 1111 1111 1111 1111 1111 0101 反码
-10:1111 1111 1111 1111 1111 1111 1111 0110 补码
原码取反加一得到补码,补码取反加一得到原码
%d:打印一个有符号的十进制整数(int) ,%u:打印一个无符号十进制整数(把参数先转化为unsiged int类型,再打印)
强制类型转换:char表示一个字节,当用%d打印时,就会把char 隐式转化为int类型
1000 0000 0000 0000 0000 0000 1000 0000 -128原码
1111 1111 1111 1111 1111 1111 0111 1111 -128反码
1111 1111 1111 1111 1111 1111 1000 0000 -128补码
char->int->unsigned int ,高位填充符号位数字,unsigned int高位没有符号位。