1 進(jìn)制的轉(zhuǎn)換(一)
1.1 問題
完成以下數(shù)字的進(jìn)制轉(zhuǎn)換:
35轉(zhuǎn)換成二進(jìn)制;
101101 轉(zhuǎn)換成十進(jìn)制;
1.2 方案
進(jìn)制就是一種計(jì)數(shù)的方式,數(shù)值的表示形式。在編程中,同一個(gè)整數(shù)至少有4種表示方式:十進(jìn)制、二進(jìn)制、八進(jìn)制、十六進(jìn)制。
十進(jìn)制:逢十進(jìn)一,默認(rèn)情況下數(shù)值都是十進(jìn)制;
二進(jìn)制:逢二進(jìn)一,數(shù)值以0b開頭;
八進(jìn)制:逢八進(jìn)一,數(shù)值以0開頭;
十六進(jìn)制:逢十六進(jìn)一,數(shù)值以0x開頭;
在程序中的數(shù)據(jù)的四種表現(xiàn)形式如圖-1所示:

圖-1
1.3 步驟
實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。
步驟一:將35轉(zhuǎn)換成二進(jìn)制
用35除以2取余,直到商小于2以后,從商逆序向上組合所有的余數(shù),因此得到35的二進(jìn)制形式100011,如圖-2所示:

圖-2
可以在代碼中驗(yàn)證此結(jié)果,如圖-3、圖-4所示:

圖-3

圖-4
步驟二:將101101轉(zhuǎn)換成十進(jìn)制
用101101每個(gè)位置上的數(shù)乘以2的當(dāng)前位次冪,然后所有結(jié)果相加的和就是該數(shù)的十進(jìn)制表現(xiàn)形式,因此得到101101的十進(jìn)制是77,如圖-5所示:

圖-5
可以在代碼中驗(yàn)證此結(jié)果,如圖-6、圖-7所示:

圖-6

圖-7
2 進(jìn)制的轉(zhuǎn)換(二)
2.1 問題
完成以下數(shù)字的進(jìn)制轉(zhuǎn)換:
35轉(zhuǎn)換成八進(jìn)制;
0217轉(zhuǎn)換成十進(jìn)制;
2.2 步驟
實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。
步驟一:將35轉(zhuǎn)換成八進(jìn)制
35除以8取余,直到商小于8以后,從商逆序向上組合所有余數(shù),因此得到35的八進(jìn)制形式是43,如圖-8所示:

圖-8
可以在代碼中驗(yàn)證此結(jié)果,如圖-9、圖-10所示:

圖-9

圖-10
步驟二:將0217轉(zhuǎn)換成十進(jìn)制
0217每個(gè)位置上的數(shù)乘以8的當(dāng)前位次冪,然后所有結(jié)果相加的和,因此得到0217的十進(jìn)制形式是143,如圖-11所示:

圖-11
可以在代碼中驗(yàn)證此結(jié)果,如圖-12、圖-13所示:

圖-12

圖-13
3 進(jìn)制的轉(zhuǎn)換(三)
3.1 問題
完成以下數(shù)字的進(jìn)制轉(zhuǎn)換:
0x3125AF轉(zhuǎn)換成二進(jìn)制;
0b110111100110轉(zhuǎn)換成十六進(jìn)制;
3.2 方案
因?yàn)樗奈欢M(jìn)制能夠表達(dá)的最大數(shù)是15即F。所以十六進(jìn)制轉(zhuǎn)二進(jìn)制,只要把每個(gè)位用四位二進(jìn)制表示后,再進(jìn)行組合即可。
二進(jìn)制轉(zhuǎn)十六進(jìn)制,則需要從右側(cè)開始,每四位一劃分,四位用一個(gè)十六進(jìn)制的符號(hào)表示后,再組合即可。
3.3 步驟
實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。
步驟一:將0x3125AF轉(zhuǎn)換成二進(jìn)制
將0x3125AF的每一位用四位二進(jìn)制數(shù)表示,再組合在一起即可,得到二進(jìn)制形式001100010010010110101111,高位的零可以省略不寫,即1100010010010110101111,如圖-14所示:

圖-14
可以在代碼中驗(yàn)證此結(jié)果,如圖-15、圖-16所示:

圖-15

圖-16
步驟二:將0b110111100110轉(zhuǎn)換成十六進(jìn)制
將0b110111100110二進(jìn)制轉(zhuǎn)十六進(jìn)制,則需要從右側(cè)開始,每四位一劃分,用一個(gè)十六進(jìn)制的符號(hào)表示再組合,即DE6,如圖-17所示:

圖-17
可以在代碼中驗(yàn)證此結(jié)果,如圖-18、圖-19所示:

圖-18

圖-19
4 使用不同進(jìn)制顯示數(shù)據(jù)
4.1 問題
按如下要求完成練習(xí):
聲明一個(gè)整型變量,初始化時(shí)使用十進(jìn)制數(shù)據(jù),賦值為10,使用八進(jìn)制和十六進(jìn)制輸出初始化后的數(shù)據(jù);
為該變量賦值010,使用十進(jìn)制和十六進(jìn)制輸出改變后的數(shù)據(jù);
為該變量賦值0x10,使用十進(jìn)制輸出改變后的數(shù)據(jù)。
4.2 方案
以八進(jìn)制的形式給某個(gè)變量進(jìn)行賦值,賦值時(shí)數(shù)據(jù)以0開頭。
NSLog格式符%o,控制臺(tái)顯示的八進(jìn)制不帶前導(dǎo)0。NSLog格式符%#o,控制臺(tái)顯示的八進(jìn)制帶前導(dǎo)0。
以十六進(jìn)制的形式給某個(gè)變量進(jìn)行賦值,賦值時(shí)數(shù)據(jù)以0x開頭。
NSLog格式符%x,控制臺(tái)顯示的十六進(jìn)制不帶前導(dǎo)0x。NSLog格式符%#x,顯示的十六進(jìn)制帶前導(dǎo)0x。
4.3 步驟
實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。
步驟一:使用八進(jìn)制和十六進(jìn)制輸出數(shù)據(jù)
在viewDidLoad方法中定義int類型的變量i,以十進(jìn)制的形式賦值為10,使用%o、%#o和%x、%#x分別以八進(jìn)制和十六進(jìn)制的形式輸出該變量,如圖-20所示:

圖-20
以八進(jìn)制和十六進(jìn)制的形式輸出結(jié)果分別為12和a,如圖-21所示:

圖-21
步驟二:使用十進(jìn)制和十六進(jìn)制輸出改變后的數(shù)據(jù)
將變量i賦值為010,使用十進(jìn)制和十六進(jìn)制輸出改變后的數(shù)據(jù),如圖-22所示:

圖-22
以十進(jìn)制和十六進(jìn)制的形式輸出結(jié)果都是8,如圖-23所示:

圖-23
步驟三:使用十進(jìn)制輸出改變后的數(shù)據(jù)
將變量i賦值為0x10,使用十進(jìn)制輸出改變后的數(shù)據(jù),如圖-24所示:

圖-24
以十進(jìn)制的形式輸出結(jié)果是16,如圖-25所示:

圖-25
5 判斷如下關(guān)系表達(dá)式的結(jié)果
5.1 問題
判斷以下關(guān)系表達(dá)式的運(yùn)算結(jié)果:
1) 7 > 5
2) 2 > 2
3) 15 > 7 + 2
4) 1 == 2
5) 3 != 2
5.2 方案
關(guān)系運(yùn)算也可以叫做比較運(yùn)算,用于確定條件是否成立,得出一個(gè)是或者否的結(jié)論,所以關(guān)系運(yùn)算符的運(yùn)算結(jié)果只有兩種,成立則代表真,不成立則代表假。
關(guān)系運(yùn)算經(jīng)常與條件語句結(jié)合使用,關(guān)系語句包括以下幾種:
“>”大于;
“<”小于;
“==”等于;
“!=”不等于;
“>=”大于等于;
“<=”小于等于;
5.3 步驟
實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。
步驟一:依次計(jì)算每條語句的運(yùn)算結(jié)果
7 > 5;
7比5大,因此7>5運(yùn)算結(jié)果成立,其計(jì)算結(jié)果為真,也就是1。
2 > 2;
2和2相等,因此2>2的運(yùn)算結(jié)果不成立,其計(jì)算結(jié)果為假,也就是0。
15 > 7 + 2;
關(guān)系運(yùn)算的優(yōu)先級(jí)比算術(shù)運(yùn)算低,因此先計(jì)算7+2,再計(jì)算15>9,其計(jì)算結(jié)果為真。
1 == 2;
1和2不相等,因此1==2的運(yùn)算結(jié)果不成立,其計(jì)算結(jié)果為假,也就是0。
3 != 2;
3和2不相等,因此3!=2的運(yùn)算結(jié)果成立,其計(jì)算結(jié)果為真。