二进制转换为十进制采用权相加法。
权相加法就是将二进制数每位上的数乘以权,然后相加得到的结果就是十进制数。所谓权就是整数部分是2n-1,小数部分是2n,n是数字所在的位数。
步骤:
第一步:首先把二进制数位数补齐。比如该正数为11101,但它是一个8位二进制数,补齐位数后就是00011101。
注意:正整数首位为0,负整数首位为1。
第二步:补齐数位后,将二进制数每位上的数乘以权,然后相加得到的结果就是十进制数。
例如: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
因此,二进制数11101转换为十进制数29。
注意:因为任何数乘以零都为零,所以位数为零的项可以忽略。
若补齐数位的二进制数首位为0,那么该数补齐数位后即可计算;若补齐数位的二进制数首位为1,即该数为负整数时,此时该数需要取反加1再进行计算。
例如: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
因此,二进制数10011101转换为十进制数-99。
本文固定URL:https://www.dotcpp.com/qa/34
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程