二進(jìn)制轉(zhuǎn)換為十進(jìn)制采用權(quán)相加法。
權(quán)相加法就是將二進(jìn)制數(shù)每位上的數(shù)乘以權(quán),然后相加得到的結(jié)果就是十進(jìn)制數(shù)。所謂權(quán)就是整數(shù)部分是2n-1,小數(shù)部分是2n,n是數(shù)字所在的位數(shù)。
步驟:
第一步:首先把二進(jìn)制數(shù)位數(shù)補(bǔ)齊。比如該正數(shù)為11101,但它是一個(gè)8位二進(jìn)制數(shù),補(bǔ)齊位數(shù)后就是00011101。
注意:正整數(shù)首位為0,負(fù)整數(shù)首位為1。
第二步:補(bǔ)齊數(shù)位后,將二進(jìn)制數(shù)每位上的數(shù)乘以權(quán),然后相加得到的結(jié)果就是十進(jìn)制數(shù)。
例如:00011101
0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
1×24+1×23+1×22+1×20=29
因此,二進(jìn)制數(shù)11101轉(zhuǎn)換為十進(jìn)制數(shù)29。
注意:因?yàn)槿魏螖?shù)乘以零都為零,所以位數(shù)為零的項(xiàng)可以忽略。
若補(bǔ)齊數(shù)位的二進(jìn)制數(shù)首位為0,那么該數(shù)補(bǔ)齊數(shù)位后即可計(jì)算;若補(bǔ)齊數(shù)位的二進(jìn)制數(shù)首位為1,即該數(shù)為負(fù)整數(shù)時(shí),此時(shí)該數(shù)需要取反加1再進(jìn)行計(jì)算。
例如:10011101
10011101首位為1,取反為-01100010,加1為-01100011。
0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
-(1×26+1×25+1×21+1×20)=-99
因此,二進(jìn)制數(shù)10011101轉(zhuǎn)換為十進(jìn)制數(shù)-99。
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫(xiě)的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫(xiě)出一個(gè)爬蟲(chóng)的Python編程課程
只會(huì)語(yǔ)法寫(xiě)不出代碼?手把手帶你寫(xiě)100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門(mén)課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程