十进制小数分数与二进制之前的转换

原文链接:https://blog.csdn.net/shelldon/article/details/54411472

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

使用短除法。

例如将十进制分数11/28转换为二进制数,过程如下:

1、首先将分子分母分别转换成二进制

(11)10=(1011)2

(28)10=(11100)2

2、使用短除,借位时是借2,商只能是0或1

0.0110010

————————

11100 ) 1011.00

111 00

—————————

100 000

11 100

—————————

100 000

11 100

—————————

100

...

所以:11/28=1011/11100=0.01100100...

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

十进制数的整数位是二进制数的整数位,十进制数的小数位是二进制数的小数位。两部分分开转换。

整数部分 除以2取余,逆序排列。

小数部分 乘 2 取整,顺序排列。

例如转换十进制小数11.4,过程如下。

计算整数部分,11转换为二进制位1011:

余 数

+                ^

2 |     1 1     1  | 逆

+-+------+       | 序

2 |     5     1  | 写

+-+----+       | 出

2 |   2     0  |

+-+--+       |

2 | 1     1  |

+--+       +

0

计算小数部分0.4,首先将小数部分一直乘2,积的整数部分顺序取出:

0.4*2=0.8      取0      |

0.8*2=1.6      取1      |  顺

0.6*2=1.2      取1      |  序

0.2*2=0.4      取0      |  排

0.4*2=0.8      取0      |  列

0.8*2=1.6      取1      |

0.6*2=1.2      取1      |

0.2*2=0.4      取0      |

可以看出0110是循环,因此小数部分的二进制是

0.01100110……(循环0110)

最终结果是整数位和小数位合并1101111.01100110……(2)

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

使用按权展开求和法,小数点左边是2的正数次方,从0开始;小数点右边是2的负数次方,从-1开始。

例如将101.111(2)转换成十进制数

1*(2^2)+0*(2^1)+1*(2^0)       # 整数部分

+ 1*(2^(-1))+1*(2^(-2))+1*(2^(-3))       # 小数部分

=5.875

原文地址:https://www.cnblogs.com/qy-blogs/p/9196814.html

时间: 2024-10-27 19:45:42

十进制小数分数与二进制之前的转换的相关文章

js二进制和十进制转换代码

js二进制和十进制转换代码:十进制和二进制的转换是在编码中是时常用到的,下面就是一段这样的代码实例,希望能够给需要的朋友带来帮助.代码实例如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="author" conte

Java 二进制与十六进制转换

Java 二进制与十六进制转换 二进制转换十六进制 /** * @description 将二进制转换成16进制 * * @param buf * @return */ public static String parseByte2HexStr(byte buf[]) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < buf.length; i++) { String hex = Integer.toHexString(buf

python模块介绍- binascii 二进制和ASCII转换

简介 binascii模块包含很多用来方法来转换二进制和各种ASCII编码的二进制表示法.通常不直接使用这些功能,而是使用封装模块,如uu, base64或binhex.binascii模块包含用C语言编写更快的低级功能,通常为高级模块所使用. 功能:二进制和ASCII转换. 类型:标准模块 相关模块: base64 标准模块. binhex 标准模块. uu        标准模块. quopri  标准模块. Uu编码 uu编码格式现在已经比较少使用(http://zh.wikipedia.

继续学习----二进制与十进制转换

二进制与十进制转换 本人有个更直接的方法,例如二进制数1000110转成十进制数可以看作这样: 数字中共有三个1 即第二位一个,第三位一个,第七位一个,然后十进制数即2的2-1次方+2的3-1次方+2的7-1次方即2+4+64=70 次方数即1的位数减一.如此计算只需要牢记2的前十次方即可在此本人为大家陈述一下:2的0次方是1 2的1次方是2 2的2次方是4 2的3次方是8 2的4次方是16 2的5次方是32 2的6次方是64 2的7次方是128 2的8次方是256 2的9次方是512 2的10

进制转换之二进制与十进制转换

一.正整数的十进制转换二进制: 要点:除二取余,倒序排列 解释:将一个十进制数除以二,得到的商再除以二,依此类推直到商等 于一或零时为止,倒取将除得的余数,即换算为二进制数的结果 例如把52换算成二进制数,计算结果如图: 52除以2得到的余数依次为:0.0.1.0.1.1,倒序排列,所以52对应的二进制数就是110100. 由于计算机内部表示数的字节单位都是定长的,以2的幂次展开,或者8位,或者16位,或者32位..... 于是,一个二进制数用计算机表示时,位数不足2的幂次时,高位上要补足若干个

二进制与十进制转换问题

进制转换问题实为最基础也实用的一种基本技能.首先得说,进制转换很简单,但就是时间长不用依赖计算器就容易忘,毕竟这不像其他的能在日常生活就经常用的的数学. 那么就聊聊十进制与二进制的转化,十进制转化为二进制,两种方法:短除法,数轴法.先说短除法,用10进制数除以2,得到的余数按倒叙排列,把52化成2进制就像这样,得到的结果为110100 再说数轴法,所谓的数轴法就是在数轴上从右到左分别标记2^0到2^n比如2^0等于1,2^1等于2,2^2等于4,一直下去,然后观察10进制数由几个这样的数组成,拿

二进制和十进制转换

注:八进制.十六进制和二进制同理,只不过将2换成8或16 二进制转换 正整数转成二进制:除二取余,直到商为零,然后倒序排列,高位补零. 例:42的二进制为:00101010 小数转换为二进制:乘二取整,直到小数部分为零,然后正序排列,即为二进制小数部分. 例:0.125的二进制为0.001 二进制转为十进制:相乘相加 整数部分 小数部分

图片-二进制之间的转换

一.图片转换二进制 public byte[] GetPictureData() { string path = System.AppDomain.CurrentDomain.BaseDirectory; //获取程序的基目录 path += "\\PrintImage\\test001.png"; // 需要转换为二进制的图片地址 FileStream Fs = new FileStream(path, FileMode.Open); // 使用文件流打开,并保存为byte[] by

十进制、十六进制、二进制之间的转换(仅作记录)

二进制和十六进制的互相转换比较重要.不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然. 我们也一样,只要学完这一小节,就能做到. 首先我们来看一个二进制数:1111,它是多少呢? 你可能还要这样计算:1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15. 然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8.4