计算机组成原理
https://www.bilibili.com/video/BV1ps4y1d73V?p=8
16的负一次方既为1/16 == 16^-1
16进制转换为10进制。
例如:5.8
5 * 16^1 + 8 * 16^-1
十进制转N进制,则除以N ,然后逆序余数
2->8 进制快速转换
001 111 000 010 011 010
1 7 0 2 3 2 八进制
8421推理,所以为可以3位为一体直接推出8进制。
16进制也是这个道理
8进制转2进制
25 => 010 101
每个8进制对应3位的二进制
(25)10
脚边有10代表这是一个10进制的数。
脚标有时候是个单词,例如
二进制是 B
十进制是D , 因为十的英语单词是 decimalism
十六进制是H 或者0x , 因为十六的英语单词是hexadecimal
十进制转任何进制使用短除法会更加直观一点
例如
2 | 75 … 1
2 | 37 … 1
2 | 18 … 0
2 | 9 … 1
2 | 4 … 0
2 | 2 … 0
2 | 1 … 1
0
(75)10 或者 75D
(100 1011) 2 或者 1001011B
十进制->任意进制
小数部分 * N进制,取整数部分。
如果有死循环,则推荐保留5位数。
#小数点后不容易用二进制表达
例如 0.3 转二进制
0.3 * 2 = 0.6
0.6 * 2 = 1.2
0.2 * 2 = 0.4
0.4 * 2 = 0.8
0.8 * 2 = 1.6
0.6 * 2 = 1.2
#出现了循环,0.01001 1B
小数点后的简便运算
2^-1 | 2^-2 | 2^-3
0.5 | 0.25 | 0.125
例如。0.125 转二进制。
根据表格位 0.001
8421码 用二进制的形式,只取0~9的二进制表达式去表达10进制。
例如:
13
0001 0011
在 8421 码中 1010~1111 没有定义 ,既10~16
还有 余3 码 和 2421 码。
就是字面意思,留三个码从0011 开始
二进制4位分别表示2421
无符号整数的加法运算。
二进制 + 运算
从低位开始,按位相加,并往更高位进位。
二进制减法,末位加+,减法变加法,涉及到数论
被减数不变,减数 全部位按位取反、末尾加1
#减法,前面的是被减数,后面的是减数
n bit 无符号整数 表示范围 0~2^n - 1
1 1 1 1
4bit 表示 0 ~ 15 == 2^4 - 1
超出则溢出。
带符号整数
符号位 0 正 1 负
原码
补码
反码
同一个含义,不同的编码方式表示。
该计算机硬件能支持带符号整数有上限
例如通用寄存器只能存8个
需要先将 原码 转变为 反码 然后再变成 补码
如果是正数
| 原码 | 反码 | 补码 | 都是一样的
如果是负数
| 原码< -> 反码 | 符号位不变,数值位取反
| 反码 -> 补码 | 末位加 1
| 原码 <-> 补码 | 从右往左找到第一个1,这个 1 左边的所有“数值位” 按位取反
补码的加法运算,如果超出,则舍弃最高位。
【B】补 <-> 【-B】补
全部(包括符号位)位按位取反、末位+1
补码的减法 A-B = A + (-B)
补码:真值 0 只有一种补码。
补码没办法表达-128这个数。
是否发生溢出,可以带入十进制验证。是否超出合法范围。
带符号整数:原码
n+1 bit |
合法表示范围 |
最大的数 |
最小的数 |
真值0的表示 |
带符号整数: 原码 |
-(2^n - 1) <= x <= 2^n -1 |
0,111…111 = 2^n -1 |
1,111…111 = -(2^n-1) |
[+0]原= 0,000…000 [-0]原 = 1,000…000 |
带符号整数: 反码 |
-(2^n - 1) <= x <= 2^n - 1 |
0,111…111 = 2^n - 1 |
1,000…000 = -(2^n-1) |
[+0]反 = 0,000…000 [-0]反 = 1,111…111 |
带符号整数: 补码 |
-2^n <= x <= 2^n -1 |
0,111…111 = 2^n - 1 |
1,000…000 = -2^n |
[0]补 = 0,000…000真值0只是一种补码 |
无符号整数 |
0<= x <= 2^n+1 -1 |
1111…111 = 2^n+1 - 1 |
0000…000 = 0 |
0000…000 |
带符号整数:移码 |
-2^n <= x <= 2^n - 1 |
1111…111 = 2^n-1 |
0000…000 = -2^n |
[0]移 = 1000…000真值 0 只是一种移码 |
补码的合法表示范围比原码多一个负数,只有一种方法表示真值 0
移码:补码符号位取反
常用于浮点数阶码
定点整数的编码表示:原码、反码、补码、移码
定点小数的编码表示:原码、反码、补码
定点数
*定点整数 – 既:带符号整数
*定点小数
对两个定点小数A、B进行加法、减法时,需要先转换为补码