進(jìn)制
學(xué)習(xí)進(jìn)制的障礙
很多人學(xué)不好進(jìn)制,原因是總以十進(jìn)制為依托去考慮其他進(jìn)制,需要運(yùn)算的時(shí)候也總是先轉(zhuǎn)換成十進(jìn)制,這種學(xué)習(xí)方法是錯誤的.
我們?yōu)槭裁匆欢ㄒD(zhuǎn)換十進(jìn)制呢谦去?僅僅是因?yàn)槲覀儗κM(jìn)制最熟悉,所以才轉(zhuǎn)換.
每一種進(jìn)制都是完美的,想學(xué)好進(jìn)制首先要忘掉十進(jìn)制蹦哼,也要忘掉進(jìn)制間的轉(zhuǎn)換鳄哭!
進(jìn)制的定義
- 八進(jìn)制由8個(gè)符號組成:0 1 2 3 4 5 6 7 逢八進(jìn)一
- 十進(jìn)制由10個(gè)符號組成:0 1 2 3 4 5 6 7 8 9逢十進(jìn)一
- N進(jìn)制就是由N個(gè)符號組成:逢N進(jìn)一
做個(gè)練習(xí)
- 1 + 1 在____情況下等于 3 ?
.
.
.
.
.
.
.
.
.
.
.
.
.
十進(jìn)制由10個(gè)符號組成: 0 1 3 2 8 A B E S 7 逢十進(jìn)一
如果這樣定義十進(jìn)制: 1 + 1 = 3!就對了!
這樣的目的何在?
傳統(tǒng)我們定義的十進(jìn)制和自定義的十進(jìn)制不一樣.那么這10個(gè)符號如果我們不告訴別人這個(gè)符號表,別人是沒辦法拿到我們的具體數(shù)據(jù)的!用于加密!
十進(jìn)制由十個(gè)符號組成,逢十進(jìn)一,符號是可以自定義的!!
進(jìn)制的運(yùn)算
做個(gè)練習(xí)
- 八進(jìn)制運(yùn)算
- 2 + 3 = __ , 2 * 3 = __ ,4 + 5 = __ ,4 * 5 = __.
- 277 + 333 = __ , 276 * 54 = __ , 237 - 54 = __ , 234 / 4 = __ .
八進(jìn)制加法表
0 1 2 3 4 5 6 7
10 11 12 13 14 15 16 17
20 21 22 23 24 25 26 27
...
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 = 7 4+4 = 10
1+5 = 6 2+5 = 7 3+5 = 10 4+5 = 11 5+5 = 12
1+6 = 7 2+6 = 10 3+6 = 11 4+6 = 12 5+6 = 13 6+6 = 14
1+7 = 10 2+7 = 11 3+7 = 12 4+7 = 13 5+7 = 14 6+7 = 15 7+7 = 16
八進(jìn)制乘法表
0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 27...
1*1 = 1
1*2 = 2 2*2 = 4
1*3 = 3 2*3 = 6 3*3 = 11
1*4 = 4 2*4 = 10 3*4 = 14 4*4 = 20
1*5 = 5 2*5 = 12 3*5 = 17 4*5 = 24 5*5 = 31
1*6 = 6 2*6 = 14 3*6 = 22 4*6 = 30 5*6 = 36 6*6 = 44
1*7 = 7 2*7 = 16 3*7 = 25 4*7 = 34 5*7 = 43 6*7 = 52 7*7 = 61
實(shí)戰(zhàn)四則運(yùn)算
277 236 276 234
+ 333 - 54 * 54 / 4
-------- -------- -------- --------
二進(jìn)制的簡寫形式
二進(jìn)制: 1 0 1 1 1 0 1 1 1 1 0 0
三個(gè)二進(jìn)制一組: 101 110 111 100
八進(jìn)制: 5 6 7 4
四個(gè)二進(jìn)制一組: 1011 1011 1100
十六進(jìn)制: b b c
二進(jìn)制:從0 寫到 1111
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
這種二進(jìn)制使用起來太麻煩,改成更簡單一點(diǎn)的符號:
0 1 2 3 4 5 6 7 8 9 A B C D E F 這就是十六進(jìn)制了
數(shù)據(jù)的寬度
數(shù)學(xué)上的數(shù)字纲熏,是沒有大小限制的妆丘,可以無限的大。但在計(jì)算機(jī)中局劲,由于受硬件的制約勺拣,數(shù)據(jù)都是有長度限制的(我們稱為數(shù)據(jù)寬度),超過最多寬度的數(shù)據(jù)會被丟棄鱼填。
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int test(){
int cTemp = 0x1FFFFFFFF;
return cTemp;
}
int main(int argc, char * argv[]) {
printf("%x\n",test());
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
計(jì)算機(jī)中常見的數(shù)據(jù)寬度
- 位(Bit): 1個(gè)位就是1個(gè)二進(jìn)制位.0或者1
- 字節(jié)(Byte): 1個(gè)字節(jié)由8個(gè)Bit組成(8位).內(nèi)存中的最小單元Byte.
- 字(Word): 1個(gè)字由2個(gè)字節(jié)組成(16位),這2個(gè)字節(jié)分別稱為高字節(jié)和低字節(jié).
- 雙字(Doubleword): 1個(gè)雙字由兩個(gè)字組成(32位)
那么計(jì)算機(jī)存儲數(shù)據(jù)它會分為有符號數(shù)和無符號數(shù).那么關(guān)于這個(gè)看圖就理解了!
無符號數(shù),直接換算!
有符號數(shù):
正數(shù): 0 1 2 3 4 5 6 7
負(fù)數(shù): F E D B C A 9 8
-1 -2 -3 -4 -5 -6 -7 -8
自定義進(jìn)制符號
練習(xí)
- 現(xiàn)在有10進(jìn)制數(shù) 10個(gè)符號分別是:2药有,9,1剔氏,7塑猖,6,5谈跛,4羊苟, 8,3 , A 逢10進(jìn)1 那么: 123 + 234 = ____
十進(jìn)制: 0 1 2 3 4 5 6 7 8 9
自定義: 2 9 1 7 6 5 4 8 3 A
92 99 91 97 96 95 94 98 93 9A
12 19 11 17 16 15 14 18 13 1A
72 79 71 77 76 75 74 78 73 7A
62 69 61 67 66 65 64 68 63 6A
52 59 51 57 56 55 54 58 53 5A
42 49 41 47 46 45 44 48 43 4A
82 89 81 87 86 85 84 88 83 8A
32 39 31 37 36 35 34 38 33 3A
922
那么剛才通過10進(jìn)制運(yùn)算可以轉(zhuǎn)化10進(jìn)制然后查表!但是如果是其他進(jìn)制.我們就不能轉(zhuǎn)換,要直接學(xué)會查表
- 現(xiàn)在有9進(jìn)制數(shù) 9個(gè)符號分別是:2感憾,9蜡励,1,7阻桅,6凉倚,5,4嫂沉, 8稽寒,3 逢9進(jìn)1 那么: 123 + 234 = ____
十進(jìn)制: 0 1 2 3 4 5 6 7 8
自定義: 2 9 1 7 6 5 4 8 3
92 99 91 97 96 95 94 98 93
12 19 11 17 16 15 14 18 13
72 79 71 77 76 75 74 78 73
62 69 61 67 66 65 64 68 63
52 59 51 57 56 55 54 58 53
42 49 41 47 46 45 44 48 43
82 89 81 87 86 85 84 88 83
32 39 31 37 36 35 34 38 33
922
ARM匯編入門(一) — 進(jìn)制本質(zhì)
ARM匯編入門(二) — 寄存器&pc&bl指令
ARM匯編入門(三) — 寄存器&cpu補(bǔ)充
ARM匯編入門(四) — 棧SP&FP寄存器
ARM匯編入門(五) — bl&ret函數(shù)的調(diào)用與返回
ARM匯編入門(六) — 函數(shù)的參數(shù)和返回值
ARM匯編入門(七) — 函數(shù)的局部變量與嵌套調(diào)用
ARM匯編入門(八) — 狀態(tài)寄存器
ARM匯編入門(九) — 內(nèi)存分區(qū)全局變量和局部變量
ARM匯編入門(十) — 循環(huán)選擇判斷
待續(xù)…