浅谈十进制小数和二进制小数之间的转换

 更新时间:2017年01月09日 10:00:58   投稿:jingxian  
下面小编就为大家带来一篇浅谈十进制小数和二进制小数之间的转换。小编觉得挺不错的现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

一、二进制数转换成十进制数

由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。

二、十进制数转换为二进制数

十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。

1. 十进制整数转换为二进制整数

十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

2.十进制小数转换为二进制小数

十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

例1109 (173.8125)10=( )2

解: 由[例1107]得(173)10=(10101101)2

由[例1108]得(0.8125)10=(0.1101)2

把整数部分和小数部分合并得: (173.8125)10=(10101101.1101)2

十进制小数→→→→→二进制小数 方法:“乘2取整”

对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。

如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位

如:0.25的二进制

0.25*2=0.5 取整是0
0.5*2=1.0    取整是1
即0.25的二进制为 0.01 ( 第一次所得到为最高位,最后一次得到为最低位)

0.8125的二进制

0.8125*2=1.625   取整是1

0.625*2=1.25     取整是1

0.25*2=0.5       取整是0

0.5*2=1.0        取整是1

即0.8125的二进制是0.1101(第一次所得到为最高位,最后一次得到为最低位)

十进制小数→→→→→八进制小数 方法:“乘8取整”

0.71875)10 =(0.56)8

0.71875*8=5.75 取整5

0.75*8=6.0      取整6

即0.56

十进制小数→→→→→十六进制小数方法:“乘16取整”例如:

(0.142578125)10=(0.248)16

0.142578125*16=2.28125 取整2

0.28125*16=4.5          取整4

0.5*16=8.0              取整8

即0.248
 
非十进制数之间的转换

(1)二进制数与八进制数之间的转换

转换方法是:以小数点为界,分别向左右每三位二进制数合成一位八进制数,或每一位八进制数展成三位二进制数,不足三位者补0。例如:

(423。45)8=(100 010 011.100 101)2

(1001001.1101)2=(001 001 001.110 100)2=(111.64)8

(2)二进制与十六进制转换

转换方法:以小数点为界,分别向左右每四位二进制合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。例如:

(ABCD.EF)16=(1010 1011 1100 1101.1110 1111)2

(101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5B4B.68)16

可以把二进制作为中间的过渡使用。

以上这篇浅谈十进制小数和二进制小数之间的转换就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 深入解析C++ Data Member内存布局

    深入解析C++ Data Member内存布局

    本篇文章是对C++中的Data Member内存布局进行了详细的分析介绍,需要的朋友参考下
    2013-07-07
  • C语言实现颠倒栈的方法

    C语言实现颠倒栈的方法

    这篇文章主要介绍了C语言实现颠倒栈的方法,是针对数据结构中栈的常见操作技巧,需要的朋友可以参考下
    2014-09-09
  • 一般函数指针和类的成员函数指针深入解析

    一般函数指针和类的成员函数指针深入解析

    以下是对一般函数指针和类的成员函数指针进行了介绍。需要的朋友可以过来参考下
    2013-08-08
  • C语言实现3*3数组对角线之和示例

    C语言实现3*3数组对角线之和示例

    今天小编就为大家分享一篇C语言实现3*3数组对角线之和示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • C++文件的操作及小实验示例代码详解

    C++文件的操作及小实验示例代码详解

    这篇文章主要介绍了C++文件的操作及小实验,对于文件,它是一个流对象,对文件的操作无非是读和写,通过本文的学习大家将会理解文件的具体操作
    2022-05-05
  • 基于C++自制屠夫躲猫猫小游戏

    基于C++自制屠夫躲猫猫小游戏

    这篇文章主要为大家详细介绍了如何基于C++自制屠夫躲猫猫小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • 带你了解C++初阶之引用

    带你了解C++初阶之引用

    这篇文章主要为大家介绍了C++初阶之引用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • 合并排序(C语言实现)

    合并排序(C语言实现)

    递归算法是把一个问题分解成和自身相似的子问题,然后再调用自身把相应的子问题解决掉。这些算法用到了分治思想。
    2013-02-02
  • C++库std::flush的具体使用

    C++库std::flush的具体使用

    std::flush是C++标准库中的一个操作符,用于刷新输出流,本文主要介绍了C++库std::flush的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • opencv利用矩形框选中某一区域并保存为新图片

    opencv利用矩形框选中某一区域并保存为新图片

    这篇文章主要为大家详细介绍了opencv利用矩形框选中某一区域并保存为新图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01

最新评论