矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 4409|回复: 24

一个十六位的二进制小数,想转化为十进制小数,有没有简单的方法?

[复制链接]
     
发表于 2018-3-20 21:22:25 来自手机 | 显示全部楼层 |阅读模式
只能做十六次加法吗
     
 楼主| 发表于 2018-3-23 19:51:32 | 显示全部楼层
yjmwxwx 发表于 2018-3-23 18:35
你说这个程序我以前写过,不过是ARMV7的汇编。 下面是23位转换的程序,这个其实是浮点转定点程序里面拿 ...

谢谢,

我也设计了一个8位的二进制数转小数的汇编,

思路就是先判断最高位是1 的话,往“口袋”里+0.5 ,再判断次高位是1的话往往“口袋”里+0.25,。。。这样做8次判断,8次加法,倒也不是很复杂,要是位数再多就不好弄了。
回复 支持 1 反对 0

使用道具 举报

     
发表于 2018-3-23 12:00:55 | 显示全部楼层
ro0t 发表于 2018-3-23 11:45
1100 1110 1001 0110

52886

最高位是2的15次方,不是16;

最低位是2的0次方;

您见过二进制小数吗?   怎么表示??

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

     
 楼主| 发表于 2018-3-20 21:23:36 来自手机 | 显示全部楼层
说错了,是十五次
回复 支持 反对

使用道具 举报

     
发表于 2018-3-20 21:42:07 | 显示全部楼层
用EXCEL表格,它有这个函数功能,但是一般人找不到,如果只需要一个数要转换,你在这里问的功夫都转换好几遍了。
根据它的原理转换太简单了,反过来就复杂得多,还要做除2的计算的。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-3-20 21:56:50 | 显示全部楼层
果然是电脑和单片机论坛,那用汇编来写呢?有什么好办法吗?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-3-20 21:57:08 | 显示全部楼层
果然是电脑和单片机论坛,那用汇编来写呢?有什么好办法吗?
回复 支持 反对

使用道具 举报

     
发表于 2018-3-20 22:03:33 | 显示全部楼层
电脑上的计算器(程序员)上可以进行二进制、八进制、十进制、十六进制之间的转换。
回复 支持 反对

使用道具 举报

     
发表于 2018-3-20 22:38:33 | 显示全部楼层
推荐电子报2007年文章:
《巧用计算器对小数进行多进制相互转换》。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-3-20 22:58:53 来自手机 | 显示全部楼层
我是想用汇编写个子程序
回复 支持 反对

使用道具 举报

     
发表于 2018-3-23 11:35:03 | 显示全部楼层
什么叫:“一个十六位的二进制小数”

举个栗子吧

回复 支持 反对

使用道具 举报

     
发表于 2018-3-23 11:45:23 | 显示全部楼层
1100 1110 1001 0110

52886

计算器  Windows自带的可以转


真要手工计算 就是  

1X2^16+1X2^15+0X2^14+0X2^13....................就这样加出来就是了



回复 支持 反对

使用道具 举报

     
发表于 2018-3-23 12:01:53 | 显示全部楼层
lz举个栗子吧
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-3-23 14:14:13 | 显示全部楼层
本帖最后由 电子马甲 于 2018-3-23 14:17 编辑





举个粒子:

比如一个数的小数部分是 1011 0011 ,1100 1010  怎么把这两个字节的二进制转化为 小数?

我现在知道,最高位的1 代表0.5  次高位1代表0.125    第三位1代表0.0625.。。。。。。

想找一种用汇编语言写的,比较简洁的算法
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-3-23 14:41:13 | 显示全部楼层
大致算了一下16位二进制似乎没有必要,8位二进制就有9位小数了, 但计算这8位二进制小数也很麻烦,
回复 支持 反对

使用道具 举报

     
发表于 2018-3-23 18:35:45 | 显示全部楼层
本帖最后由 yjmwxwx 于 2018-3-23 20:06 编辑
电子马甲 发表于 2018-3-23 14:14
举个粒子:

比如一个数的小数部分是 1011 0011 ,1100 1010  怎么把这两个字节的二进制转化为 ...



刚才看错了,原来你要简单,那直接查表啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-4-17 05:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表