二进制转为十进制的两种方法


二进制 (基数为2数字系统中有两个可能值,在每一位上,通常表示为0或1。相反,在十进制 (基数为10数字系统中,在每一位上,有10个可能值 (0,1,2,3,4,5,6,7,8, 或9)。

在使用不同的数字系统时,为了避免混乱的产生,可将基数标记在某个数的下标位置。例如,可以把二进制数标明为 "基数为2"的数,即写作100111002。而十进制数156可写作15610,并读作"以10为基数的一百五十六"。

因为二进制系统是电子计算机的内部语言,因此真正的程序员应该掌握如何把二进制数转换为十进制数。而如果首先学习把十进制数转换为二进制数则相对更困难。

注意:这里只讨论数值的转换而非ASCII代码的转换。

方法1:按位记数
  1. 以Convert from Binary to Decimal Step 1为标题的图片
    1
    在本例中,我们将把二进制数100110112转换为十进制数。从左到右地列出2的幂。从2 0开始,结果为"1"。每向右移一位,就对其指数加1。列出的元素个数应等于二进制数的位数。在本例中,10011011有8位数字,因此应列出的8个元素:128, 64, 32, 16, 8, 4, 2, 1
     
  2. 以Convert from Binary to Decimal Step 2为标题的图片
    2
    把二进制数上的每一位数字对应地写到列表下方。
     
  3. 以Convert from Binary to Decimal Step 3为标题的图片
    3
    从右边开始,画出线条,用于把二进制数中连续的数字和其上方的2的幂连接起来。从右边开始,画一条线,把二进制数的第一个数字和2的第一个幂值连接起来。然后,画一条线,把二进制数的第二个数字和2的第二个幂值连接起来。依次类推,画出线条把每一个数字和对应的幂值连接起来。
     
  4. 以Convert from Binary to Decimal Step 4为标题的图片
    4
    扫描二进制数中的每一位数字。如果对应的数字为1,则在线条下方写下对应的2的幂值。如果对应的数字为0,则在线条下方写下0。
     
  5. 以Convert from Binary to Decimal Step 5为标题的图片
    5
    把线条下方的数相加。所得总和为155。这就是二进制数10011011对应的十进制数。或者写成基数下标的形式:
     
  6. 以Convert from Binary to Decimal Step 6为标题的图片
    6
    以上方法熟悉后,你将记得2的每一个幂值,因此可以省略第1步。
     
 
方法2:双倍法
  1. 1
    该方法不需要使用幂运算。因此,当你通过心算转换较大的数值时,该方法更简单,因为你只需要记下部分和。
     
  2. 以Convert from Binary to Decimal Step 8为标题的图片
    2
    从给定二进制数最左边的数字开始。对于每一位数字,你向右移动,对之前所得总和乘以2并加上当前数值。例如,把1011001 2转换为十进制数,我们将采用如下步骤:
     
  3. 以Convert from Binary to Decimal Step 9为标题的图片
    3
    1011001 → 0 * 2 + 1 = 1
     
  4. 以Convert from Binary to Decimal Step 10为标题的图片
    4
    1011001 → 1 * 2 + 0 = 2
     
  5. 以Convert from Binary to Decimal Step 11为标题的图片
    5
    1011001 → 2 * 2 + 1 = 5
     
  6. 以Convert from Binary to Decimal Step 12为标题的图片
    6
    1011001 → 5 * 2 + 1 = 11
     
  7. 以Convert from Binary to Decimal Step 13为标题的图片
    7
    1011001 → 11 * 2 + 0 = 22
     
  8. 以Convert from Binary to Decimal Step 14为标题的图片
    8
    1011001 → 22 * 2 + 0 = 44
     
     
  9. 以Convert from Binary to Decimal Step 15为标题的图片
    9
    1011001 → 44 * 2 + 1 = 8910
     
  10. 以Convert from Binary to Decimal Step 16为标题的图片
    10
    和按位记数法一样,本方法经调整后也能把基于任何基数的数转换为十进制数。在这里采用双倍法因为这里给定的数是以2为基数的。如果给定的数是基于不同的基数,则应本方法中的2换成对应的基数。例如,如果给定数是以37为基数,则你在计算时应把*2换为*37。而最终的结果则总是对应的十进制数(基数10)。
     
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM