-
python十进制小数转二进制小数_python将小数转化为二进制_Python实现的十进制小数与二进制小数相互转换功能...
2021-01-29 14:22:01分享给大家供大家参考,具体如下:十进制小数 ⇒ 二进制小数乘2取整对十进制小数乘2得到的整数部分和小数部分,整数部分即是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。...本文实例讲述了Python实现的十进制小数与二进制小数相互转换功能。分享给大家供大家参考,具体如下:
十进制小数 ⇒ 二进制小数
乘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(第一次所得到为最高位,最后一次得到为最低位)
def dec2bin(x):
x -= int(x)
bins = []
while x:
x *= 2
bins.append(1 if x>=1. else 0)
x -= int(x)
return bins
print(dec2bin(.8125))
# [1, 1, 0, 1]
二进制小数 ⇒ 十进制小数
小数点后,从左向右,每位分别表示
def bin2dec(b):
d = 0
for i, x in enumerate(b):
d += 2**(-i-1)*x
return d
print(dec2bin(0.8125))
# [1, 1, 0, 1]
print(bin2dec(dec2bin(0.8125)))
# 0.8125
PS:这里再为大家推荐几款计算与转换工具供大家参考使用:
在线任意进制转换工具:http://tools.jb51.net/transcoding/hexconvert
科学计算器在线使用_高级计算器在线计算:http://tools.jb51.net/jisuanqi/jsqkexue
在线计算器_标准计算器:http://tools.jb51.net/jisuanqi/jsq
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
-
十进制转二进制,小数怎么转
2019-10-24 16:57:38整数由十进制转二进制挺好转的,小数怎么转呢?记录一下 回顾整数转换 短除2直至除尽,倒取余数 记录小数转换 小数部分乘2直至小数部分为0,顺取整数 0.125 转换后 0.001 0.6 * 2 = 1.2 —————— 1 0.2 * ...整数由十进制转二进制挺好转的,小数怎么转呢?记录一下
回顾整数转换
短除2直至除尽,倒取余数
记录小数转换
小数部分乘2直至小数部分为0,顺取整数
0.125 转换后 0.001
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.6用二进制表示为 0.1001 1001 1001 1001 ……
10用二进制表示为1010
则10.6用二进制表示为1010.1001 1001 1001 1001 …… -
进制转换【最全进制转换汇总】(整数_小数_正数_负数)正负数整数小数十进制转任意进制-正负数整数小数任意...
2020-11-05 18:26:20二:【小数】十进制转任意进制:辗转相乘取余,取出整数部分,直到小数的十分位为0为止,倒叙输出整数部分 比如:十进制转二进制0.36 三:【整数】任意进制转十进制:从最后一位倒叙开始,分别乘以任意进制的0、1...文章目录:
正数部分
补充知识点:各进制符号表示及其关系——二进制(B)、八进制(O)、十进制(D)、十六进制(前缀OX,后缀H)
一:【整数】正数十进制转任意进制:辗转相除取余,直到结果位1位置,加上最后的1倒叙输出
二:【小数】正数十进制转任意进制:辗转相乘取余,取出整数部分,直到小数的十分位为0为止,倒叙输出整数部分;小数点前一位表示正负号【1负,0正】
三:【整数】正数任意进制转十进制:从最后一位倒叙开始,分别乘以任意进制的0、1、2...n 次方,最后相加
四:【小数】 正数任意进制转十进制:从左到右,分别乘以任意进制的0;-1;-2;-3;-4;-5...... ...n 次方,最后相加
五:跳过十进制-正数从低进制转化成高进制:找对应关系,从右往左,对应关系位为一组,不够补零,最后正序组一起;当然也可以通过十进制为中间量转换
六:跳过十进制-正数从高进制转化成低进制:找对应关系,从左往右,把每个高进制为拆分成对应关系位数,不够补零,最后正序组一起;当然也可以通过十进制为中间量转换
负数部分
方法一:(看是8位,16位,32位,64位;在前面补0到规定位数)【直接写全位数,最高位加上1】
方法二(看是8位,16位,32位,64位;在前面补0到规定位数)【先变成正数,用正数去化,最后变回负数】
第二步:得原码(辗转相除法,进制关系规则法)【看是8位,16位,32位,64位;在前面补0到规定位数】
第二步:求负小数部分,辗转相除法,乘上转化的进制,到十分位为0为止
四:【小数】任意进制负小数转化成十进制负小数【和上面互逆操作】
在这里对进制转换进行一个全方位的总结,具体如下
以下数据均来自网络
补充知识点:各进制符号表示及其关系——二进制(B)、八进制(O)、十进制(D)、十六进制(前缀OX,后缀H)
【B表示】2进制 逢2进1 用两个阿拉伯数字:0、1 【O表示】8进制 逢8进1 用八个阿拉伯数字:0、1、2、3、4、5、6、7 【D表示】10进制 逢10进1 用十个阿拉伯数字:0到9 【OX/H表示】16进制 逢16进1 但我们只有0~9这十个数字,我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15
字母不区分大小写
扩展:在线进制转换
在线工具:https://tool.lu/hexconvert/
在线进制转换器:http://www.zhuanhuanqi.com/danwei/jinzhi.html
查询网:http://www.98bk.com/zzcx1/jzzh/
C在线工具:https://tool.oschina.net/hexconvert
tool:https://www.ltool.net/binary-octal-decimal-hexadecimal-number-converter-in-simplified-chinese.php
第一部分:正数
一:【整数】正数十进制转任意进制:辗转相除取余,直到结果位1位置,加上最后的1倒叙输出
比如:十进制转二进制
用2辗转相除取余至到结果为1,将余数和最后的1从下向上倒序写就是结果
二:【小数】正数十进制转任意进制:辗转相乘取余,取出整数部分,直到小数的十分位为0为止,倒叙输出整数部分;小数点前一位表示正负号【1负,0正】
比如:十进制转二进制0.36
注意:小数点前一位表示正负号【1负,0正】
0.111010
三:【整数】正数任意进制转十进制:从最后一位倒叙开始,分别乘以任意进制的0、1、2...n 次方,最后相加
比如:二进制转十进制
从最后一位开始算,依次列为第0、1、2...n 位,第n位数(0或1)分别乘以2的n次方,最后相加就是结果
四:【小数】 正数任意进制转十进制:从左到右,分别乘以任意进制的0;-1;-2;-3;-4;-5...... ...n 次方,最后相加
比如:二进制转十进制0.10010
0-1-0-0-1-0
0;-1;-2;-3;-4;-5......
五:跳过十进制-正数从低进制转化成高进制:找对应关系,从右往左,对应关系位为一组,不够补零,最后正序组一起;当然也可以通过十进制为中间量转换
比如:二进制转八进制
先了解二进制数与八进制数之间的对应关系。有个方法,把二进制的数从右往左,三位一组,不够补0
比如:二进制转换十六进制
参照二进制转八进制,但是它是从右往左,四位一组,不够补0
六:跳过十进制-正数从高进制转化成低进制:找对应关系,从左往右,把每个高进制为拆分成对应关系位数,不够补零,最后正序组一起;当然也可以通过十进制为中间量转换
比如:八进制转二进制
从后往前,每一位按十进制转化为三位二进制,缺位补0
第二部分:负数
在进行负数先关进制转化前,我们先来了解一下源码,补码,反码!
什么是原码?
用符号位和数值表示带符号数,数值部分用二进制形式表示
正数:符号位用“0”表示 负数:符号位用“1”表示
例如:
5的原码: 00000000 00000000 00000000 00000101;
-5的原码:10000000 00000000 00000000 00000101;【最高位补1】
什么是反码?
正数的反码:与原码相同 负数的反码:对该数的原码除符号位外各位取反 ——(1变0; 0变1): 原为1,得0; 原为0,得1;
例如:
正数00000000 00000000 00000000 00000101 的——反码还是 00000000 00000000 00000000 00000101 ;
负数10000000 00000000 00000000 00000101每一位取反(除开符号位)——得反码11111111 11111111 11111111 11111010;【互为反码】
什么是补码?
正数的补码:都与原码相同 负数的补码:对该数的原码除符号位外各位取反,然后在最后一位加1 正零和负零的补码相同,[+0]补=[-0]补=0000 0000B
例如:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011【-5】
最后转换为十六进制:0xFFFFFFFB
一:【整数】 十进制负数转化成任意进制负数
方法一:(看是8位,16位,32位,64位;在前面补0到规定位数)【直接写全位数,最高位加上1】
例如:十进制负数-5转化成十六进制
原码:10000000 00000000 00000000 00000101 反码:11111111 11111111 11111111 11111010 补码:11111111 11111111 11111111 11111011 进制转换:0xFFFFFFFB
例如:十进制负数-1转化成十六进制
原码:10000000 00000000 00000000 00000001 反码: 11111111 11111111 11111111 11111110 补码:11111111 11111111 11111111 11111111 进制转换:0xFFFFFFFF
方法二(看是8位,16位,32位,64位;在前面补0到规定位数)【先变成正数,用正数去化,最后变回负数】
例如:十进制负数-1转化成二进制
第一步:把负数看成正数
-1看成1
第二步:得原码(辗转相除法,进制关系规则法)【看是8位,16位,32位,64位;在前面补0到规定位数】
原码:0000 1001
第三步:原码取反,得反码
反码:1111 0110
第四步:反码加1,得补码
补码:1111 0111
例如:十进制负数-3转化成二进制
原码:0000 0000 0000 0000 0000 0000 0000 0011 【3的原码】 反码:1111 1111 1111 1111 1111 1111 1111 1100 补码:1111 1111 1111 1111 1111 1111 1111 1101
例如:十进制负数-5转化成二进制
原码:0000 0101【5的原码】 反码:1111 1010 补码:1111 1011
例如:十进制负数-11转化成二进制
原码:00001011【11的原码】 反码:11110100 补码:11110101
二:【小数】 十进制负小数转化成任意进制负小数
负小数的原码,补码,反码和移码怎么算
注意:小数点前一位表示正负号【1负,0正】
例如:十进制负小数转二进制-0.3125
第一步:负整数部分是0不必求,如果是就分开求
第二步:求负小数部分,辗转相除法,乘上转化的进制,到十分位为0为止
0.3125*2=0.625;整数部分是0
0.625*2=1.25,去掉整数部分;整数部分是1
0.25*2=0.5;整数部分是0
0.5*2=1.0;小数点后为0;整数部分是1
第三步:顺叙输出整数部分
0、1、0、1
第四步:加上正负号【1负,0正】
1.0101
验证:2^-2+2^-4=0.25+0.0625=0.3125
反码:1.1010
补码:1.1011
上面负整数一个是直接写出全位数;一个是看作正数取
方法一: 负整数部分和负小数部分分开计算转换【分开看】
第一步:分别求负整数部分+负小数部分
第二步:负整数部分的补码+负小数部分的补码
方法二: 先把负小数看成正小数再转换【整体看】
第一步:如果看成正小数,就要知道,小数的原码
第二步:整数和小数分别的原码
第三步:整数和小数分别的反码
第四步:整数和小数分别的补码
第五步:最后补码相加
三:【整数】任意进制负数转化成十进制负数【和上面互逆操作】
例如:二进制负数转化成1110 1101十进制负数
第一步:先减1
1110 1101-1=1110 1100
第二步:取反
0001 0011
第三步:将取反后的码,转换成十进制,然后相加
0 0 0 1 0 0 1 1
4 3 2 1 0
1*2^4+1*2^1+1*2^0=19
第四步:加上负号得到十进制负数
-19
例如:二进制负数转化成1111 0011十进制负数
减一:1111 0010 取反:0000 1101 转十相加:1*2^3+1*2^2+1*2^0=13 加负号:-13
四:【小数】任意进制负小数转化成十进制负小数【和上面互逆操作】
负小数前面小数部分是1开头
从左到右,分别乘以任意进制的0;-1;-2;-3;-4;-5...... ...n 次方,最后相加
例如:负二进制小数1.10010转负十进制小数
1-1-0-0-1-0
1*2^0+1*2^(-1)+1*2^(-4)=1.5625
五:跳过十进制-负数从低进制转化成高进制
找对应关系,从右往左,对应关系位为一组,不够补1,负数最高位变成1,最后正序组一起;当然也可以通过十进制为中间量转换
六:跳过十进制-负数从高进制转化成低进制
找对应关系,从左往右,把每个高进制为拆分成对应关系位数,不够补1,负数最高位变成1,最后正序组一起;当然也可以通过十进制为中间量转换
-
python十进制小数转二进制_Python实现的十进制小数与二进制小数相互转换功能
2020-11-21 03:03:11分享给大家供大家参考,具体如下:十进制小数 ⇒ 二进制小数乘2取整对十进制小数乘2得到的整数部分和小数部分,整数部分即是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。...本文实例讲述了Python实现的十进制小数与二进制小数相互转换功能。分享给大家供大家参考,具体如下:
十进制小数 ⇒ 二进制小数
乘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(第一次所得到为最高位,最后一次得到为最低位)
def dec2bin(x):
x -= int(x)
bins = []
while x:
x *= 2
bins.append(1 if x>=1. else 0)
x -= int(x)
return bins
print(dec2bin(.8125))
# [1, 1, 0, 1]
二进制小数 ⇒ 十进制小数
小数点后,从左向右,每位分别表示
def bin2dec(b):
d = 0
for i, x in enumerate(b):
d += 2**(-i-1)*x
return d
print(dec2bin(0.8125))
# [1, 1, 0, 1]
print(bin2dec(dec2bin(0.8125)))
# 0.8125
PS:这里再为大家推荐几款计算与转换工具供大家参考使用:
希望本文所述对大家Python程序设计有所帮助。
-
python小数的进制转换_Python实现的十进制小数与二进制小数相互转换功能
2021-02-10 09:53:48分享给大家供大家参考,具体如下:十进制小数 ⇒ 二进制小数乘2取整对十进制小数乘2得到的整数部分和小数部分,整数部分即是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。... -
c++将十进制转换为二进制 小数_常用的进制之间相互转换
2020-11-27 13:15:40十进制转换为二进制、八进制、十六进制2.1十进制转换为二进制整数部分:整数部分除2取余数,再取倒序小数部分:小数部分乘2取整,再顺序取小数部分为零时,即为乘完或者按题目要求精度要求取... -
十进制小数转二进制小数方法
2020-02-14 13:58:59对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分. 如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位... -
十进制转换成二进制,十进制小数转换成二进制小数,二进制转换成十进制
2010-02-21 15:52:00十进制小数转换成二进制小数把十进制小数转换成二进制小数所采用的规则是“乘以2取整数”。方法是用2乘以十进制纯小数,将其结果的整数部分去掉;再用2乘余下的纯小数部分,再去掉其结果的整数部分;如此继续下去,... -
【转载】十进制小数转二进制小数方法
2019-03-18 11:30:15对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分. 如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位... -
Python实现的十进制小数与二进制小数相互转换功能
2020-12-25 02:22:52对十进制小数乘2得到的整数部分和小数部分, 整数部分即是相应的二进制数码, 再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。 如此不断重复,直到小数部分为0或达到精度要求为止. 第一次所得到... -
python二进制转为十进制-Python实现的十进制小数与二进制小数相互转换功能
2020-11-11 14:18:13分享给大家供大家参考,具体如下:十进制小数 ⇒ 二进制小数乘2取整对十进制小数乘2得到的整数部分和小数部分,整数部分即是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。... -
十进制小数或带小数的十进制转二进制--控制小数位数输出(C语言)
2018-12-14 23:44:26十进制小数或带小数的十进制转二进制: 十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的... -
浅谈十进制小数和二进制小数之间的转换
2021-01-01 11:48:15十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。 1. 十进制整数转换为二进制整数 十进制整数转换为二进制整数采用”除2取余,逆序排列”法... -
【二进制】十进制小数转二进制小数的深入理解和超详细解说
2020-09-26 16:51:51首先,十进制数和所求的二进制表示方法表示的都是同一个数值,那么用十进制数乘2就相当于用其二进制乘2,即相当于二进制数小数点向右移位,当小数部分为零时,即意味着小数点移动到了最后一个有效位之后。... -
python基础教程十进制_关于十进制小数转二进制的入门教程
2021-03-06 01:02:57十进制:由 0~9 十个数字组成二进制:由 0和1 两个数字组成1、整数转换十进制转二进制的原理:十进制的数除以2,直到商为0,最后反向取余数。比如下图中的例子,十进制的13转为二进制表示,则为1101。二... -
十进制和二进制的小数转换
2020-03-23 11:38:45二进制的小数转十进制 例如:0.101 -->1*1/(2^1)+0*1/(2^2)+1*1/(2^3)=1*0.5+0*0.25+1*0.125=0.625 ...十进制转二进制 由于二进制转十进制时:整数部分是乘以2,小数部分是除以2,那么反过来我们同样分两... -
十进制小数转二进制小数
2011-08-28 19:01:11十进制小数→→→→→二进制小数 方法:“乘2取整” 对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分. 如此不断重复,直到... -
python将小数转化为二进制_Python实现的十进制小数与二进制小数相互转换功能
2020-12-02 14:47:01分享给大家供大家参考,具体如下:十进制小数 ⇒ 二进制小数乘2取整对十进制小数乘2得到的整数部分和小数部分,整数部分即是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。... -
十进制小数转二进制小数
2014-03-26 10:06:00方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分 为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求... -
两个八进制小数怎么相加_二进制、八进制、十进制、十六进制之间转换(含小数部分)...
2021-02-11 17:53:29二进制、八进制、十进制、十六进制之间转换一、十进制与二进制之间的转换(1)十进制转换为二进制,分为整数部分和小数部分①整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,...