进制
- 进制的实质就是查表
- 熟悉2进制跟16进制的转换
- 熟悉进制表的制作以及计算进制之间的加减乘除
进制练习1
通过编写7进制加法表,乘法表,并计算
23456+54356 = ?
5621 - 654 = ?
234 * 65 = ?
首先编写1-100的7进制数据
一 | 二 | 三 | 四 | 五 | 六 | 七 |
---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
30 | 31 | 32 | 33 | 34 | 35 | 36 |
40 | 41 | 42 | 43 | 44 | 45 | 46 |
50 | 51 | 52 | 53 | 54 | 55 | 56 |
60 | 61 | 62 | 63 | 64 | 65 | 66 |
编写7进制加法表
一 | 二 | 三 | 四 | 五 | 六 |
---|---|---|---|---|---|
1+1=2 | |||||
1+2=3 | 2+2=4 | ||||
1+3=4 | 2+3=5 | 3+3=6 | |||
1+4=5 | 2+4=6 | 3+4=10 | 4+4=11 | ||
1+5=6 | 2+5=10 | 3+5=11 | 4+5=12 | 5+5=13 | |
1+6=7 | 2+6=11 | 3+6=12 | 4+6=13 | 5+6=14 | 6+6=15 |
编写7进制乘法表
一 | 二 | 三 | 四 | 五 | 六 |
---|---|---|---|---|---|
1*1=1 | |||||
1*2=2 | 2*2=4 | ||||
1*3=3 | 2*3=6 | 3*3=12 | |||
1*4=4 | 2*4=11 | 3*4=14 | 4*4=22 | ||
1*5=5 | 2*5=13 | 3*5=21 | 4*5=26 | 5*5=34 | |
1*6=6 | 2*6=15 | 3*6=24 | 4*6=33 | 5*6=42 | 6*6=51 |
计算结果
$23456 + 54356 = ?$
计算过程:
- 6+6 查表是15,进一位,留5
- 5+5 查表是13, 13 + 1,3+1查表为4,为14,进一位,留4
- 4+3 查表是10, 10 + 1,11,进一位,留1
- 3+4 查表是10, 10+1 = 11,进一位,留1
- 2+5 查表是10, 10+1 = 11,进一位,留1
结果为:111145
$5621 - 654 = ?$
计算过程:
- 1不够减,借一位,为11,11-4=?,查表可得为4,
- 2-1 = 1,1-5不够,借一位,11-5=3
- 5-6不够,15-6=6
- 4
结果为:4634
$234 * 65 = ?$
计算过程:
- 4*5 = 26,留6 进2
- 3*5 = 21, 21+2, 23,留3 进2
- 2*5 = 13 13+2=15 留5,进1
- 1536
- 4*6 = 33, 留3 进3
- 3*6 = 24, 24+3,4+3 == 10,留0,进3
- 2*6 = 15, 15+3, 5+3=11,进2,留1
- 2103
结果为:22536
2+3 = 1?可能嘛
可能,当定义如下的10进制时便可,0,2,3,1,5,6,7,8,9,4
16进制与二进制的映射
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
# |
自行编写进制加密
定义如下的7进制,4,5,6,1,2,3,0
试着计算上题中的计算题目
先编写进制对应
一 | 二 | 三 | 四 | 五 | 六 | 七 |
---|---|---|---|---|---|---|
4 | 5 | 6 | 1 | 2 | 3 | 0 |
54 | 55 | 56 | 51 | 52 | 53 | 50 |
64 | 65 | 66 | 61 | 62 | 63 | 60 |
14 | 15 | 16 | 11 | 12 | 13 | 10 |
24 | 25 | 26 | 21 | 22 | 23 | 20 |
34 | 35 | 36 | 31 | 32 | 33 | 30 |
04 | 05 | 06 | 01 | 02 | 03 | 00 |
编写7进制加法表
一 | 二 | 三 | 四 | 五 | 六 |
---|---|---|---|---|---|
5+5=6 | |||||
5+6=1 | 6+6=2 | ||||
5+1=2 | 6+1=3 | 1+1=0 | |||
5+2=3 | 6+2=0 | 1+2=54 | 2+2=55 | ||
5+3=0 | 6+3=54 | 1+3=55 | 2+3=56 | 3+3=51 | |
5+0=54 | 6+0=55 | 1+0=56 | 2+0=51 | 3+0=52 | 0+0=53 |
编写7进制乘法表
一 | 二 | 三 | 四 | 五 | 六 |
---|---|---|---|---|---|
5*5=5 | |||||
5*6=6 | 6*6=2 | ||||
5*1=1 | 6*1=0 | 1*1=56 | |||
5*2=2 | 6*2=55 | 1*2=53 | 2*2=66 | ||
5*3=3 | 6*3=51 | 1*3=65 | 2*3=60 | 3*3=12 | |
5*0=0 | 6*0=53 | 1*0=62 | 2*0=11 | 3*0=26 | 0*0=35 |
计算
$23456+54356=?$
计算过程:
- 6+6 = 2 留2
- 5+5 = 6 留6
- 4+3 = 3 留3
- 3+4 = 3 留3
- 2+5 = 3 留3
结果:33362
$5621-654=?$
计算过程:
- 1-4 = 1
- 2-5 = 1
- 6-6 = 0
- 5
结果:5011
$234*65=?$
计算过程:
- 4*5 = 4
- 3*5 = 3
- 2*5 = 2
- 234
- 4*6 = 4
- 3*6 = 51 留1 进5
- 2*6 = 55 55 + 5 , 5+5=6, 55+5=56,留6,进5
- 5614
结果:51434
汇编
push 后,esp改动的一定是按机器字长来的吗?
不一定,可以push 16位的二进制数,esp-2,不可以弄8进制的数
32位:
- push dword ptr ds:[0x1234] esp = esp - 4
- push eax
- push ax
- push al X
- push word ptr ds:[0x1234] esp = esp - 2
- pop ax esp = esp + 2
- pop eax
pushad popad
标志寄存器
- 进位标志CF(carry flag) 最高位产生进位或者借位,
- 奇偶标志位PF(Parity flag) 结果中1的个数,偶数PF=1,奇数PF=0
- 辅助进位标志AF(Auxiliary Carry flag)
- 零标志位ZF(zero flag) 用来反映结果是否是0
- 符号标志位SF(signed flag) 运算结果的符号位
- 溢出标志位OF(overflow flag)
本文作者:NoOne
本文地址: https://noonegroup.xyz/posts/209dab3e/
版权声明:转载请注明出处!