進制
- 進制的實質就是查表
- 熟悉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 |
計算結果
計算過程:
- 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
計算過程:
- 1不夠減,借一位,爲11,11-4=?,查表可得爲4,
- 2-1 = 1,1-5不夠,借一位,11-5=3
- 5-6不夠,15-6=6
- 4
結果爲:4634
計算過程:
- 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進制,7,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 |
計算
計算過程:
- 6+6 = 2 留2
- 5+5 = 6 留6
- 4+3 = 3 留3
- 3+4 = 3 留3
- 2+5 = 3 留3
結果:33362
計算過程:
- 1-4 = 1
- 2-5 = 1
- 6-6 = 0
- 5
結果:5011
計算過程:
- 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)