《CSAPP》
-
信息就是:位 + 上下文 其中位又被叫做比特
-
字节:8 个位被组织在一组,称为字节
-
系统的硬件组成:
- 总线:一组电子管道
- IO 设备
- 主存:主存是临时存储设备
- 处理器:
-
操作系统管理硬件:
-
进程:进程是操作系统对一个正在运行程序的一种抽象
-
线程:一个进程实际上可以由多个称为线程的执行单元组成
-
文件:文件就是字节序列
-
无符号编码:基于传统的二进制表示法,表示大于或者等于零的数字
-
补码编码:表示有符号整数的最常见方式
-
有符号整数:可以为正或者为负的数字
-
浮点数编码:表示实数的科学计数法的
-
信息存储:大多数计算机使用 8 位的块 或者字节
十六进制数字 0 1 2 3 4 5 6 7 8 9 A B C D E F 十进制值 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 二进制值 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 -
字数据大小
-
寻址和字节顺序
-
表示字符串
-
补码编码:
- 有符号数的计算机表示方式就是补码形式
最左边的二进制位表示正数还是负数
0 表示正数 1 表示负数
使用n
个二进制位表示数字的时候,两个数之和为 2^n
如何求一个二进制的补数
在限定了使用 3 个二进制位表示数字之后,想求101
的补数
使用 2 的 3 次方 就是 8,就是 1000
1000
-
101
011
使用111
减去 101
111
- 101 010
步骤一:先计算由 n 个 1 组成的二进制数字 2^n-1
减去该数的值
步骤二:将上一步骤的结果加 1
取反加1
:将二进制数的每一个二进制位都做取反操作 然后再加 1
假设 x 的值是1101 0111
,y 的值是 1001 0001
,求 x-y
的差
1101 0111 1001 0001
1111 1111 1001 0001 0110 11 10 0110 1111
被减数(1101 0111) + 取反加 1 后的值(0110 1111)
1101 0111 0110 1111 0
在做使用 n 个二进制位表示的数字之间的减法操作时,减去一个等于加上这个数的补数然后再减去 2 的 n 次方 减去 2 的 n 次方相当于直接把两个加数的最高有效位相加时的进位忽略掉,得到的就是原加法的值
在js
中负值
以一种二补数(补码)的二进制编码存储
1、确定 -18 |-18| 10010
2、01101
0(0代表符号 )111, 1111(真值)
其中+10的八位二进制原码 0, 000, 1010
那么-10的八位二进制原码 1, 000, 1010
无符号数是相对有符号数,整个机器字长的去阿奴二进制表示数值位
左移后空出来的低位使用 0 补上