第五周汇编预前
替代版:http://poilzero.sipc115.club/index.php/archives/53/
整数进制转换
进制表示
英文 | 简写 | C中表示(以17为例) | |
---|---|---|---|
二进制 | Binary | ()B | 暂无 |
八进制 | Octal | ()O | 021 |
十进制 | Decimal | ()D | 17 |
十六进制 | Hexadecimal | ()H | 0x11 |
十六进制中,超过9的时使用A-F来表示,如下
Hexadecimal | A | B | C | D | E | F |
---|---|---|---|---|---|---|
Decimal | 10 | 11 | 12 | 13 | 14 | 15 |
To Hex
- 二进制
- 八进制
- 十六进制
各自位乘以各自位的权重,各自位的权重等于进制数的n次幂(n为从右往左,从零数第n个),以十六进制举例
(A3F)O=>(?)D
- 权重16*16 16 1
- 位值10 3 15
- ANS = 101616 + 316 + 151
H ex To
- 二进制
- 八进制
- 十六进制
使用短除法:
- 不断除以进制数得到商和余数,余数保留商继续除以进制数。
- 中止:商为0时。
- 答案:为中止时的余数向上连接到第一个余数。
以十进制转为二进制和十六进制分别举例(用表格模拟短除法列式)
(115)D=>(?)B
| 目标进制数 | 商 | 余数 |
2 | 115 | |
2 | 57 | 1 |
2 | 28 | 1 |
2 | 14 | 0 |
2 | 7 | 0 |
2 | 3 | 1 |
2 | 1 | 1 |
0 | 1 |
因此答案就为:(1110011)B
(115)D=>(?)H
| 目标进制数 | 商 | 余数 |
16 | 115 | |
16 | 7 | 3 |
0 | 7 |
因此答案就为:(73)H
捷径【B To O/H】
将二进制从右往左分块转为十进制然后转为目标进制,其中
- 转八:每三位划分一次
- 转十六:每四位划分一次
以转八位的一个例子来展示
(01110010)B=>(?)O
- (01 110 010)B
- (1)D (6)D (2)D
- (162)O
反转同理
(162)O=>(?)B
- (1 6 2)O
- (01 110 010)B
- (01110010)B
整数的储存(D To B)
以C/C++(IEEE)的标准为基准
无符号和有符号
无符号数(unsigned)全部的占位用来表示数字,有符号数最高位用于表示正负(0表示正,1表示负),其余位用于表示数值,因此会比无符号数少不少表示范围(同等占用空间情况下)。
另外,正数需要多表示0因此正数相对于负数少一个数,例如8位的有符号数字表示范围:+127~128
补码(有符号的负数表示)
这里讨论的范围除开了符号位。
为了减少逻辑电路,底层机器结构仅希望用加法计算器计算减法,如此就需要得到一个负数要满足如下(X为一个已知二进制正数,?为X对应的二进制负数即为所求。并且越位不计。已知正数表达,求负数表达),然后进行相加即可
X + ? = 0
例如
0000 0101 + ? = 0000 0000
很容易发现:0000 0101 + 1111 1010 = 1111 1111
此时再加1:则会造成越位清零 即 0000 0000
因此 ? = 1111 1010 + 0000 0001 = 1111 1011
总结?的运算规则即为:X的反码(按位取反)然后+1
以上推导的?就叫做 X的补码了,运算规则就是X的反码(按位取反)然后+1。这就是底层的负数储存原理
浮点数的储存(D To B)
前面都是整数的表示,但是计算机中还存在小数的表示,受限于知识水平和需要,仅写出十进制转二进制小数部分表示和计算。
计算机实际上是通过二进制表示的分数来表示小数部分的,例如C/C++(IEEE)中浮点类型的变量
符号位 | 阶码 | 尾数 | |
---|---|---|---|
float(32位) | 1 | 8 | 23 |
double(64位) | 1 | 11 | 52 |
其他更详细的部分用到再补吧,先鸽了
位运算的奇技淫巧
重新介绍两个位运算
与:X & Y
- Y的位如果是0,则X也一定是0,即屏蔽X对应的位
- Y的位如果是1,则Y原来是什么还是什么,也就是保留X对应的位
异或:Z ^ Q
- 满足交换律和结合律
- a^a = 0
- a^0 = a
- 同理 a^a^b = b
附录
汇编指令集分为
- CISC复杂指令集代表作是X86
- RISC精简指令集代表作是MIPS ARM
未来主要学的是x86指令集maybe
汇编:王爽
做题:看雪
逆向环境:ida
逆向教程:滴水三期