计算机组成原理
数据的表示与运算
原码,反码,补码以及JAVA中的基本数据类型
- 原码:人看的二进制,符号位 + 真值,不能做减法,0表示正数,1表示负数
- 反码:过渡编码,负数数值位取反
- 补码:计算机实际使用的编码,负数 = 反码 + 1,正数的原码,反码,补码都一样。
- Java 所有整数(byte/short/int/long)底层全是 补码 存储!
- byte 取值范围是 -128 ~ 127,对应的补码二进制 10000000 ~ 01111111,因为最高位表示 正负,当127+1 的时候,最高位就变成1了,也就变成了-128,是一个负数了,所以说必须要增加位数,使用short变成16位 0000 0000 1000 0000,这样最高位又是0表示正数了。
ASCII / Unicode / UTF-8
- ASCII:只管英文,最早的字典。
- Unicode:全球统一大字典,给所有字符分配一个唯一编号(码点)。
- UTF-8:Unicode 的实现 / 存储方式(可变长编码),互联网通用标准。
存储系统
存储器的层次结构
- CPU寄存器 → L1/L2/L3 Cache(高速缓存) → 主存(内存RAM) → 外存(SSD/HDD/磁盘/对象存储)
- CPU 运算只认寄存器,不能直接读写外存;所有数据必须逐层向上加载:外存→主存→Cache→寄存器 → CPU 执行计算缺一层就触发访存失效 / 缺页 / 缓存未命中,性能断崖下跌。
性能根基,局部性原理
两大核心局部性
- 时间局部性,刚用过的数据,短时间内大概率还要再用,把刚用的数据留在高速缓存里,不立刻淘汰。
- 空间局部性,用到某个地址的数据,它相邻 / 附近地址的数据,大概率马上也要用,预加载相邻数据、按块 / 按行缓存、内存对齐、批量预取。
Cache 核心机制
- 缓存命中 / 未命中:命中:数据在 Cache 里 → 极速读取;未命中(Cache Miss):去下层主存取,回填 Cache,延迟暴增。
- 缓存行(Cache Line)CPU 不是读单个字节,是按64B/128B 整块拉数据(利用空间局部性)。
- 替换算法LRU(最近最少使用):贴合时间局部性,淘汰最久不用的数据(Redis、JVM 缓存、操作系统页缓存全在用)。
- 写直达 / 写回:解决 Cache 与主存数据一致性。

浙公网安备 33010602011771号