版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、八進(jìn)制、二進(jìn)制和十六進(jìn)制,及其轉(zhuǎn)換為十進(jìn)制方法引入:888從左到右第一個8表示多少?第二個8呢?第三個8呢? 可表示成:888=8102+8101+8100同樣:12345.678=1104+2103+3102+4101+5100+610-1+710-2+810-310稱為十進(jìn)制的基數(shù),由0-9 共10個數(shù)碼組成 ,逢10進(jìn)1 104、103、102、101、100、10-1、10-2、10-3稱為各位數(shù)字的權(quán)重,簡稱權(quán)。表示數(shù)碼在某個位置所表示的大小與十進(jìn)制相對應(yīng),八進(jìn)制的基數(shù)為8,有0-7 共8個數(shù)碼組成,逢8進(jìn)1。例如:八進(jìn)制:3216.54=383+282+181+680+58-1+4
2、8-2 83、82、81、80、8-1、8-2 是八進(jìn)制各位的權(quán)c/c+中為了與十進(jìn)制區(qū)別,通常在八進(jìn)制數(shù)前面加個“0”(數(shù)字0),十六進(jìn)制數(shù)前面加“0 x”或“0X”。c/c+不支持直接使用二進(jìn)制。一般為了與十進(jìn)制區(qū)別在二進(jìn)制數(shù)結(jié)尾加b(或B).測試:a=123;b=0123;c=0 x123; couta“ “b“ “c二進(jìn)制例:33轉(zhuǎn)換為二進(jìn)制 十進(jìn)制八進(jìn)制例:433轉(zhuǎn)換為八進(jìn)制 十進(jìn)制十六進(jìn)制例:234轉(zhuǎn)換為六進(jìn)制 33=100011b433=0661234=0 xea十進(jìn)制轉(zhuǎn)換為八進(jìn)制、二進(jìn)制和十六進(jìn)制的方法方法:小數(shù)部分:乘基數(shù)取整法,直至小數(shù)為乘基數(shù)取整法,直至小數(shù)為0,按正常順
3、序排列,就得到對應(yīng)進(jìn)制的,按正常順序排列,就得到對應(yīng)進(jìn)制的小數(shù)部分小數(shù)部分以上就是十進(jìn)制轉(zhuǎn)換為二進(jìn)制、八進(jìn)制和十六進(jìn)制的方法。十進(jìn)制轉(zhuǎn)換為:三進(jìn)制、四進(jìn)制、五進(jìn)制、等等你會了嗎?例1:十進(jìn)制二進(jìn)制:0.8125 十進(jìn)制八進(jìn)制:0.625 十進(jìn)制十六進(jìn)制:0.8125 計算機(jī)是用二進(jìn)制存儲處理數(shù)據(jù)的,用機(jī)器實(shí)現(xiàn)相關(guān)運(yùn)算也相對簡單些,如果用10進(jìn)制實(shí)現(xiàn)起來非常復(fù)雜。計算機(jī)的運(yùn)算也都是用二進(jìn)制進(jìn)行運(yùn)算的。然后通過系統(tǒng)轉(zhuǎn)換,讓人們感覺是10進(jìn)制的運(yùn)算。然而二進(jìn)制對人們來說太長了,識讀很不方便。比如int 類型占用4個字節(jié),32位。比如100用int類型的二進(jìn)制數(shù)表達(dá)將是:0000 0000 0000
4、0000 0000 0000 0110 0100 面對這么長的數(shù)進(jìn)行思考或操作,沒有人會喜歡。因此,C/C+ 沒有提供在代碼直接寫二進(jìn)制數(shù)的方法。用16進(jìn)制或8進(jìn)制可以解決這個問題。因?yàn)?,進(jìn)制越大,數(shù)的表達(dá)長度也就越短。 為什么偏偏是十六或八進(jìn)制,而不其它的,諸如九或二十進(jìn)制呢? 2、8、16,分別是2的1次方,3次方,4次方。這樣: 3個二進(jìn)制位正好可以表示八進(jìn)制的8個數(shù)碼; 4位二進(jìn)制正好可以表達(dá)十六進(jìn)制的16個數(shù)碼; 這一點(diǎn)使得三種進(jìn)制之間可以非常直接地互相轉(zhuǎn)換。 8進(jìn)制或16進(jìn)制縮短了二進(jìn)制數(shù),便于閱讀,并且還保持了二進(jìn)制數(shù)的表達(dá)特點(diǎn)。二進(jìn)制與八進(jìn)制、十六進(jìn)制相互換算 23=8、24=
5、16,所以可以用3位二進(jìn)制表示八進(jìn)制的數(shù)碼0-7 0000,0011,0102,0113,1004,1015,1106,1117可以用4位二進(jìn)制表示十六進(jìn)制的數(shù)碼0-15 00001,00011,00102,00113,01004,01015,01106,01117, 10008,10019,1010A,1011B,1100C,1101D,1110E,1111F二進(jìn)制八進(jìn)制 從低位到高位每3位一組,然后將每組二進(jìn)制直接轉(zhuǎn)換為對應(yīng)的8進(jìn)制數(shù)碼就可以了:例如:10110100111 ,011 ,010 ,011 八進(jìn)制: 1 3 2 3所以:1011010011=01323 二進(jìn)制十六進(jìn)制從低位到
6、高位每4位一組,然后計算出每組對應(yīng)的10進(jìn)制值,再用十六進(jìn)制數(shù)碼表示就可以了:例如:101101001110 ,1101 ,0011 十六進(jìn)制: 2 d 3所以:1011010011=0 x2d3反之,八進(jìn)制二進(jìn)制將八進(jìn)制每位數(shù)字轉(zhuǎn)換成3位二進(jìn)制即可,例如: 0654110 ,101 ,100 所以:0654=110101100十六進(jìn)制二進(jìn)制將十六進(jìn)制每位數(shù)字轉(zhuǎn)換成4位二進(jìn)制即可,例如: 0 x6B40110 ,1010 ,0100 所以:0 x6B4=011010100100綜上所述,只須熟練掌握 0000-1,0001-1,0010-2,0011-3,0100-4,0101-5,0110-
7、6,0111-7, 1000-8,1001-9,1010-A,1011-B,1100-C,1101-D,1110-E,1111-F就可以了。為了方便轉(zhuǎn)換,我們應(yīng)該記住4位二進(jìn)制位的權(quán)重,根據(jù)權(quán)重迅速算出4位二進(jìn)制的十進(jìn)制值比如:1 1 1 1 權(quán):8 4 2 1練習(xí):1、1101,0110,1010,1110,1001,1100,0101,1011說出他們對應(yīng)的十六進(jìn)制數(shù)字2、快速寫出下列十六進(jìn)制對應(yīng)的二進(jìn)制 0 xfec3,0 x8d9a,0 xc2b5f,0 x426f,0 xff00 ,0 x000f 二進(jìn)制位數(shù)太多不便閱讀,一個十六進(jìn)制字符表示4位二進(jìn)制,所以編程中經(jīng)常用十六進(jìn)制,而不
8、是二進(jìn)制,要求我們能迅速看出十六進(jìn)制字符對應(yīng)的4位二進(jìn)制int a=12; 整型變量占用4個字節(jié)共32位,a變量儲存12后是什么樣子呢?0 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 01 1 0 0int a=-12; 呢?0 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 01 0 0 01 1 0 0這種表示法稱為原碼。原碼:首位為符號位,0表示正數(shù),1表示負(fù)數(shù),其余位為數(shù)值的二進(jìn)制。例1:我們知道-12+10=-2,下面用二進(jìn)制的原碼求解看看, (符號位一起做運(yùn)算) 1000 0000 0000 0000 0
9、000 0000 0000 1100 + 0000 0000 0000 0000 0000 0000 0000 1010 1000 0000 0000 0000 0000 0000 0001 0110這顯然不對?。∫虼嗽a表示的數(shù)在做加減運(yùn)算時存在問題。為解決這個問題有人提出了反碼原碼、反碼和補(bǔ)碼反碼: 符號位與原碼相同,即用0表示正,用1表示負(fù);數(shù)值位與符號位相關(guān),正數(shù)反碼的數(shù)值位和原碼的數(shù)值位相同;而負(fù)數(shù)反碼的數(shù)值位是原碼的數(shù)值位按位變反。 1111 1111 1111 1111 1111 1111 1111 0011 + 0000 0000 0000 0000 0000 0000 000
10、0 1010 1111 1111 1111 1111 1111 1111 1111 1101 接著計算:-12+10 (符號位一起做運(yùn)算) 結(jié)果是反碼,符號位為1,原碼就應(yīng)該是 1000 0000 0000 0000 0000 0000 0000 0010轉(zhuǎn)換為十進(jìn)制為:-2 ,這下正確了再計算:-12+12 (符號位一起做運(yùn)算) 1111 1111 1111 1111 1111 1111 1111 0011 + 0000 0000 0000 0000 0000 0000 0000 1100 1111 1111 1111 1111 1111 1111 1111 1111 結(jié)果是反碼,符號位為1
11、,原碼就應(yīng)該是1000000轉(zhuǎn)換為十進(jìn)制為:-0 所以反碼在處理0時就比較麻煩,存在+0和-0 。其他運(yùn)算均正確,就結(jié)果為0時比較麻煩。為了解決這個問題,后來又有人提出補(bǔ)碼概念。補(bǔ)碼: 用補(bǔ)碼表示帶符號的二進(jìn)制數(shù)時,符號位與原碼相同,即用0表示正,用1表示負(fù);數(shù)值位與符號位相關(guān),正數(shù)補(bǔ)碼與原碼相同;而負(fù)數(shù)補(bǔ)碼是在反碼的基礎(chǔ)上加1。 1111 1111 1111 1111 1111 1111 1111 0100 + 0000 0000 0000 0000 0000 0000 0000 1010 1111 1111 1111 1111 1111 1111 1111 1110 接著計算:-12+10
12、 (符號位一起做運(yùn)算) 結(jié)果是補(bǔ)碼,符號位為1,反碼就應(yīng)該是 1111 1111 1111 1111 1111 1111 1111 1110 (補(bǔ)碼) - 1 1111 1111 1111 1111 1111 1111 1111 1101 (反碼) 1000 0000 0000 0000 0000 0000 0000 0010 (原碼),原碼轉(zhuǎn)換為十進(jìn)制為:-2答案正確對于:12+(-12)=0(十進(jìn)制) 1111 1111 1111 1111 1111 1111 1111 0100 + 0000 0000 0000 0000 0000 0000 0000 1100 0000 0000 000
13、0 0000 0000 0000 0000 0000 結(jié)果是補(bǔ)碼,符號位為0,補(bǔ)碼與原碼一樣,所以結(jié)果為0 因此,到這時補(bǔ)碼很好的解決了原碼、反碼在運(yùn)算中存在的問題,計算機(jī)中保存數(shù)據(jù)一般都是用補(bǔ)碼。至此,我們解決了數(shù)的保存問題。0 0 0 01 0 1 0下面是10的補(bǔ)碼:左移得到如下的狀態(tài),看看它的值是多少?位運(yùn)算符:(按位右移)&(按位與)|(按位或)(按位異或)(按位取反)c+提供了直接操作二進(jìn)制的運(yùn)算符0 0 0 10 1 0 0如果左移兩位呢?它的值又是多少?0 0 1 01 0 0 0如果是右移一位呢?所以,左移1位相當(dāng)于乘以2,左移n位相當(dāng)于乘以2n; 右移1位相當(dāng)于除以
14、2,左移n位相當(dāng)于除以2n;移位運(yùn)算符的左操作數(shù)是要移位的值,右操作數(shù)指定要移動的位數(shù)。操作:如果把所有二進(jìn)制位向左移一位,丟棄最高位,在最右邊空出來的位置補(bǔ)0例如:int a=10,b,c; b=a1;丟棄最右邊位,最左邊位空出來的位置用符號位補(bǔ)齊。測試1: int a=10,b=-10,c,d,e,f,g; c=a1; d=b1; f=b1; g=b2; couta b c d e f g ; 進(jìn)行移位運(yùn)算時如果移動的位數(shù)超出了變量類型的二進(jìn)制長度,比如int類型32位,如果左移34位會怎樣呢?例如:int a=-2,b; b=a34; coutb;計算機(jī)會將移位數(shù)與變量類型的二進(jìn)制長度值
15、取余,然后移動余數(shù)位。即:34%32=2,然后左移2位。測試2:int a=-0 x40000006,b;b=a1;coutb;請寫出變量a的保存的二進(jìn)制值,然后分析原因注意:左移有符號數(shù)時有可能會溢出!移動位數(shù)超出變量的長度,與變量長度取余,然后移動余數(shù)位&(按位與)|(按位或)(按位異或)(按位取反)& 按位與 如果兩個相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為1,否則為0。即: 1&1=1 ,1&0=0 , 0&1=0 ,0&0=0 按位與是指:參加運(yùn)算的兩個數(shù)據(jù),按二進(jìn)制位進(jìn)行“與”運(yùn)算。如果兩個相應(yīng)的二進(jìn)制位都為,則該位的結(jié)果值為1;否則為
16、0。這里的1可以理解為邏輯中的true,0可以理解為邏輯中的false。例如:int a=10,b=0 xfffffffd,c; a:0000 0000 0000 0000 0000 0000 0000 1010 b:1111 1111 1111 1111 1111 1111 1111 1101 c=a&b: 0000 0000 0000 0000 0000 0000 0000 1000int a=10,b=0 xfffffff7,c; a:0000 0000 0000 0000 0000 0000 0000 1010 b:1111 1111 1111 1111 1111 1111 1111 0111 c=a&b: 0000 0000 0000 0000 0000 0000 0000 0010 int a=10,b=0 x8,c; a: 0000 0000 0000 0000 0000 0000 0000 1010 b: 0000 0000 0000 0000 0000 0000 0000 1000 c=a&b: 0000 0000 0000 0000 0000 0000 0000 1000 清零特定位:將特定位設(shè)為0,其余位為1,然后與要清零的變量按位與運(yùn)算。取某數(shù)指定位的值:將特定位設(shè)為1,其余位為0,然后與要清零的變量按位與運(yùn)算。|按位或
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度公司股權(quán)轉(zhuǎn)讓退股協(xié)議3篇
- 二零二五年度時尚博主與模特合作拍攝合同3篇
- 2025年度大型橋梁加固工程合同終止與監(jiān)測服務(wù)續(xù)約協(xié)議3篇
- 二零二五年度鄉(xiāng)村旅游用地流轉(zhuǎn)承包合同書3篇
- 2025年度消防安全設(shè)施運(yùn)行維護(hù)管理合同3篇
- 2025年度智能物流倉儲合作全新簽約協(xié)議模板3篇
- 2025年度國有企業(yè)股權(quán)轉(zhuǎn)讓協(xié)議書3篇
- 二零二五年度現(xiàn)代農(nóng)業(yè)土地承包權(quán)流轉(zhuǎn)及項(xiàng)目合作協(xié)議3篇
- 二零二五年度職業(yè)體育團(tuán)隊(duì)兼職教練員聘用協(xié)議3篇
- 二零二五年度養(yǎng)殖場市場營銷用工合同3篇
- DBT29-305-2024 天津市裝配式建筑評價標(biāo)準(zhǔn)
- 2021-2022學(xué)年廣東省廣州市海珠區(qū)六年級(上)期末英語試卷
- 【年產(chǎn)2000噸色氨酸發(fā)酵工廠的計算與設(shè)計(附布置圖流程圖)15000字(論文)】
- 《社交禮儀(慕課版)》-課程標(biāo)準(zhǔn)
- 材料性能學(xué)智慧樹知到期末考試答案章節(jié)答案2024年南昌大學(xué)
- (新版)初級磨工職業(yè)鑒定考試題庫(含答案)
- 數(shù)據(jù)中心供電系統(tǒng)應(yīng)用方案
- (正式版)SH∕T 3507-2024 石油化工鋼結(jié)構(gòu)工程施工及驗(yàn)收規(guī)范
- 牡丹江2024年黑龍江牡丹江醫(yī)科大學(xué)招聘109人筆試歷年典型考題及考點(diǎn)附答案解析
- 貴州省黔西南布依族苗族自治州2023-2024學(xué)年六年級下學(xué)期6月期末語文試題
- 九宮數(shù)獨(dú)200題(附答案全)
評論
0/150
提交評論