二进制转换为十进制采用权相加法

权相加法就是将二进制数每位上的数乘以权,然后相加得到的结果就是十进制数。所谓权就是整数部分是2n-1,小数部分是2n,n是数字所在的位数。

步骤:

第一步:首先把二进制数位数补齐。比如该正数为11101,但它是一个8位二进制数,补齐位数后就是00011101。

注意:正整数首位为0,负整数首位为1。

第二步:补齐数位后,将二进制数每位上的数乘以权,然后相加得到的结果就是十进制数。

例如:00011101

00011101
2726252423222120

1×24+1×23+1×22+1×20=29

因此,二进制数11101转换为十进制数29。

注意:因为任何数乘以零都为零,所以位数为零的项可以忽略。

若补齐数位的二进制数首位为0,那么该数补齐数位后即可计算;若补齐数位的二进制数首位为1,即该数为负整数时,此时该数需要取反加1再进行计算。

例如:10011101

10011101首位为1,取反为-01100010,加1为-01100011。

01100011
2726252423222120

-(1×26+1×25+1×21+1×20)=-99

因此,二进制数10011101转换为十进制数-99。


点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)