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

article/2025/10/31 13:14:42

 

十进制分数转换为二进制数
使用短除法。

例如将十进制分数11/28转换为二进制数,过程如下:
1、首先将分子分母分别转换成二进制 
(11)10=(1011)2 
(28)10=(11100)2 


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

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


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

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

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

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

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



计算小数部分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
 

附 python 版十进制与二进制转换

 

# coding=UTF-8
from decimal import Decimaldef dec2bin(n, bit=20):"""n, integer or float to convertbit, bits after pointreturn binary, string"""negative = Falseif n < 0:negative = Truen *= -1integer = int(n)decimal = n - integerbinary = ""if n == 0:return "0"while integer != 0:result = int(integer % 2)integer /= 2binary = str(result) + binaryif decimal != 0:i = 0decimal_bin = ""  # binary decimal after convertwhile decimal != 0 and i < bit:result = int(decimal * 2)decimal = decimal * 2 - resultdecimal_bin += str(result)i += 1binary = binary + '.' + decimal_binif negative:binary = '-' + binaryreturn binarydef bin2dec(n):"""n binary, support pointreturn integer or float"""negative = Falseif n < 0:negative = Truen *= -1integer = int(n)decimal = n - integerif integer != 0:integer_str = str(integer)length = len(integer_str)integer = 0for i in xrange(0, length):bit = int(integer_str[i])if bit == 1:integer += 2 ** (length - i - 1)elif bit != 0:print "invalid integer:" + str(n)if decimal != 0:decimal_str = str(decimal)[2:] # skip "0."length = len(decimal_str)decimal = 0for i in xrange(0, length):bit = int(decimal_str[i])if bit == 1:decimal += 2 ** (-1 * (i + 1))elif bit != 0:print "invalid decimal:" + str(n)result = integer + decimalif negative:result *= -1return resultdef testcases():for pair in [(125, '1111101'),(1.3, '1.01001100110011001100'),(2.5, '10.1'),(0, '0'),(-1, '-1'),(0.5, '.1')]:assert pair[1] == dec2bin(pair[0])for pair in [(-1001.1100, -9.75),(-1101, -13),(111.111, 7.875),(0.1101, 0.8125),(1001, 9),(0, 0),(0.1, 0.5)]:assert pair[1] == bin2dec(pair[0])print "all test case success"if __name__ == "__main__":# testcases()print bin2dec(0.5)

 

 

 

参考:

 

 

 

http://blog.csdn.net/caoguo_app_android/article/details/9955743

 

 


http://chatgpt.dhexx.cn/article/o78e3hqL.shtml

相关文章

二进制小数快速转成十进制小数的方法

例&#xff1a;0.0100101二进制转换成十进制为0.2890625。 直接说方法&#xff1a; 将小数部分提取出来为0100101并将其看成二进制整数&#xff0c;转换成十进制就是143237&#xff0c;答案即为37/1280.2890625。128为二进制整数最高位64的两倍。 再如0.101100100101二进制转换…

小数十进制转二进制

整数部分的十进制和二进制转换很容易&#xff0c;下面我们只考虑小数部分的转化&#xff1a; 一、十进制小数转二进制 小数部分十进制小数乘以 2&#xff0c;得出的积&#xff0c;然后把积的整数位取出&#xff0c;再用积的小数部分乘以 2&#xff0c;再把积的整数位取出&…

小数转二进制

小数转二进制 小数转二进制常用的方法有两种&#xff1a; 定点存储法 以0.625为例-----转换二进制为&#xff1a; 浮点存储法 二进制为&#xff1a;01000001 10011101 00000000 00000000 C#里使用浮点存储法&#xff0c;先用定点存储法计算后再进行浮点存储法计算。 由于转…

WARNING: RXTX Version mismatch Jar version = RXTX-2.1-7 native lib Version = RXTX-2.2-20081207 Cl

1.问题描述&#xff1a; WARNING: RXTX Version mismatchJar version RXTX-2.1-7native lib Version RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net gnu.io.NoSuchPortExceptionat gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:218)…

银河麒麟龙芯mips64架构集成RXTX串口通讯兼容问题

前言 应用涉及到串口通讯&#xff0c;用到的是RXTX。一直部署在win环境&#xff0c;项目要求用国产服务器、银河麒麟操作系统、龙芯处理器、国产中间件、国产数据库。因此出现rxtx在以上环境中兼容问题&#xff0c;下面记录下我遇到的问题。如有其他问题可邮箱联系mokeily9912…

RXTX串口通信(一)

准备工作&#xff1a;https://download.csdn.net/download/sinat_27815631/10318202 在此下载虚拟串口工具&#xff0c;以及串口调试工具 1.虚拟串口工具解压后双击此即可。 会看到这个界面&#xff0c;会添加串口&#xff0c;然后打开设备管理器。 2.串口调试工具 这样串口…

java串口rxtx的若干坑

首先读串口大部分用的都是rxtx&#xff0c;rxtx的相关介绍都很多&#xff0c;不介绍了 坑1&#xff0c;必须jdk1.8&#xff0c;而且最好是201的&#xff0c;版本高&#xff0c;直接jvm崩溃 坑2&#xff0c;windows上可用&#xff0c;但Linux上未必可行&#xff0c;读数据必报…

JavaDemo——java使用RXTX读写串口

对RXTX的介绍&#xff0c;copy自https://blog.csdn.net/u011728105/article/details/48085615 RXTXRXTX是一个提供串口和并口通信的开源java类库&#xff0c;由该项目发布的文件均遵循LGPL协议。RXTX项目提供了Windows,Linux,Mac os X,Solaris操作系统下的兼容javax.comm串口通…

使用RXTX实现简单串口通信调试工具

最终效果如下图&#xff1a; 1、把rxtxParallel.dll、rxtxSerial.dll拷贝到&#xff1a;C:\WINDOWS\system32下。 2、RXTXcomm.jar 添加到项目类库中。 package serialPort;import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import j…

Springboot + rxtx 实现串口读写 案例

经过大量翻阅文章总结出springboot连接串口最可行的方法&#xff01;希望能帮到大家( •̀ ω •́ )✧ 使用Rxtx实现串口通信 1、配置pom.xml <!-- 串口内容读取 --><dependency><groupId>org.bidib.jbidib.org.qbang.rxtx</groupId><artifactId&…

java使用RXTX的详细总结

1 简介 项目要求&#xff1a;读取串口信息&#xff0c;并输出展示相应的图像&#xff0c;本篇文章不深入谈前端的内容着重于后端遇到的问题。2021-01-08更新&#xff0c;发现一个重大的问题&#xff1a;如果有人能解决的话请在评论区回复&#xff1a; 在连上串口后&#xff0c…

JAVA使用RXTXcomm进行串口通信(一)

1.引入RXTXcomm.JAR包 首先下载相应的jar文件 压缩包包括:RXTXcomm.jar(64位环境)、win32com.dll和javax.comm.properties。 下载地址:https://www.aliyundrive.com/s/JSeSQsAyYeZ 点击链接保存&#xff0c;或者复制本段内容&#xff0c;打开「阿里云盘」APP &#xff0c;无需…

SpringBoot使用RXTX连接串口教程及遇到的坑总结

文章目录 SpringBoot使用RXTX连接串口教程及遇到的坑总结一、所用环境及依赖二、部署流程2.1 下载RXTXComm包2.2 部署RXTXComm包 三、编写串口使用程序3.1 编写RXTXConfig.java3.2 编写实体类SerialPortEntity3.3 编写监听器SerialPortListener3.4 编写工具类SerialPortUtil3.5…

【计算机基础|计算机组成原理】【10】海明校验码

海明校验码 海明校验码思路 偶校验&#xff1a;1010 → 01010&#xff0c;能发现奇数位错误&#xff0c;但无法确定是哪一位出错 → 1个校验位只能携带2种状态信息&#xff1a;对/错 海明码设计思路&#xff1a;将信息位分组进行偶校验 → 多个校验位能携带多种状态信息&#x…

计算机组成原理汉明校验,海明校验码(计算机组成原理11)

海明校验码 视频链接地址&#xff1a; https://www.bilibili.com/video/BV1BE411D7ii?fromsearch&seid6420326887479343502 前言 在本篇中&#xff0c;你将掌握 海明码的基本思想 海明码的求解步骤和全校验码 在计算机内部进行存储、计算的数据都是以二进制形式传送&#…

海明校验码纠错设计原理

本文不阐述海明码计算方式&#xff0c;为了节省您的时间&#xff0c;请先学习海明码/奇偶校验是如何计算的&#xff0c;如果好奇其海明码的纠错设计思路再来看此文章&#xff01; 信息为位数为n&#xff0c;校验位数为k&#xff0c;正确状态占1位&#xff0c;所以总位数&#…

2.21 海明校验码

海明校验码 需要了解海明码的编码规则&#xff0c;要会计算需要多少位校验位。 海明码的编码规则 校验位&#xff1a; 校验位的位置是有规律的。都是位于2n。 比如20(1),21(2),22(4)。。都是校验位。 信息位&#xff1a;不是校验位的其他位置。 举个例子 当信息位有1位&am…

【软考学习7】数据校验——海明校验码、循环校验码、奇偶校验码

一、检错、纠错和码距 1.1 检错 从接收的报文中&#xff0c;检查出错误。 1.2 纠错 从接收的报文中检查出错误&#xff0c;并改正错误。 一般通过加冗余信息&#xff08;增大码距&#xff09;来实现。 1.3 码距 码距是整个编码系统中任意两个码字的最小距离。 也就是说&a…

超详细的海明校验码方法解读

海明校验码原理&#xff1a;在有效的信息为中加入几个校验位形成海明码&#xff0c;使码距[rjazgj1] 比较均匀地拉大&#xff0c;并把海明码的每个二进制位分配到几个奇偶校验组[rjazgj2] 中。当某一位出错后&#xff0c;就会引起有关的几个校验位的值发生变化&#xff0c;这不…

海明校验码原理以及作用机制的介绍

什么是海明校验码&#xff1f; 由Richard Hamming于1950年提出、还被广泛采用的一种很有效的校验方法&#xff0c;是只要增加少数几个校验位&#xff0c;就能检测出二位同时出错、亦能检测出一位出错并能自动恢复该出错位的正确值的有效手段&#xff0c;后者被称为自动纠错。 它…