如果您了解IEEE浮点符号的工作原理,则可以这样做.基本上,您需要转换为python LONG,执行按位运算符,然后隐式返回.例如:

import time,struct,math

long2bits = lambda L: ("".join([str(int(1 << i & L > 0)) for i in range(64)]))[::-1]

double2long = lambda d: struct.unpack("Q",struct.pack("d",d))[0]

double2bits = lambda d: long2bits(double2long(d))

long2double = lambda L: struct.unpack('d',struct.pack('Q',L))[0]

bits2double = lambda b: long2double(bits2long(b))

bits2long=lambda z:sum([bool(z[i] == '1')*2**(len(z)-i-1) for i in range(len(z))[::-1]])

>>> pi = 3.1415926

>>> double2bits(pi)

'0100000000001001001000011111101101001101000100101101100001001010'

>>> bits2long('1111111111111111000000000000000000000000000000000000000000000000')

18446462598732840960L

>>> double2long(pi)

4614256656431372362

>>> long2double(double2long(pi) & 18446462598732840960L)

3.125

>>>

def rshift(x,n=1):

while n > 0:

x = 9223372036854775808L | (x >> 1)

n -= 1

return x

>>> L = bits2long('1'*12 + '0'*52)

>>> L

18442240474082181120L

>>> long2double(rshift(L,0) & double2long(pi))

2.0

>>> long2double(rshift(L,1) & double2long(pi))

3.0

>>> long2double(rshift(L,4) & double2long(pi))

3.125

>>> long2double(rshift(L,7) & double2long(pi))

3.140625

但是,这只会截断位数,而不会舍入它们. rshift函数是必需的,因为python的右移运算符用零填充最左边的空位.请参阅IEEE浮点here的说明.

matlab中定点数16位转为14位,如何使用python将浮点数转换为具有预定义位数的固定点...相关推荐

  1. matlab p文件转码 matlab pcode文件 将matlab中的p文件转为m文件工具

    matlab p文件转码 matlab pcode文件 将matlab中的p文件转为m文件工具 源码可见,解密P ID:22600679158222577美丽小飞侠大队

  2. java 中 10进制 转为 4位 或者8位 16进制数

    int i =789; //输出为16进制数 Integer.toHexString(), String s=Integer.toHexString(Integer.valueOf(value)); ...

  3. matlab修改图片位深度_BMP位图32位转为24位深度

    帮朋友做一个视频采集和基本处理功能,要求的是.bmp格式 几天下来,通过directshow进行视频采集,并抓去图片保存,按照要求进行业务处理,以前的处理程序是基于RGB24 而显示器是32位真彩色, ...

  4. Office——安装从32位转为64位

    首先自己的机子是64位的,之前不知道怎么回事转了一个32 位的Office,虽然也没什么问题,但是还是希望安装64位的Office 本来以为很简单,卸载安装不就可以了,谁曾想? 无法安装,这个错误出现 ...

  5. Matlab中eig内置函数转为C语言

    本文记录一下如何将MATLAB中的eig函数转为C语言,即通过C语言求解矩阵的特征值与特征向量.[V,D]=eig(Rx)中V为矩阵Rx的特征向量,D为矩阵的特征值.其中Rx维度为12*12的复矩阵. ...

  6. 【JavaScript】JS处理32位整型位运算

    由上一篇leetcode题目(反转整数)中所涉及到的js整型范围,针对js如何处理32位整数运算原理以作扩展: 1.32位整数运算 首先要清楚,在JS中无论是整数还是小数都是按照64位的浮点数形式存储 ...

  7. matlab中exp(liangx),Matlab基础知识

    <Matlab基础知识>由会员分享,可在线阅读,更多相关<Matlab基础知识(122页珍藏版)>请在人人文库网上搜索. 1.Lxy, China Jiliang Univer ...

  8. PythonStock(13):使用stockstats计算股票中的16个常用指标方法大全

    前言 使用Python开发一个股票项目. 项目地址: https://github.com/pythonstock/stock 相关资料: http://blog.csdn.net/freewebsy ...

  9. 【C/C++】中的__FILE__、__LINE__、#line、__func__关键字(预定义宏)

    c++11预先定义了一些标识符,其实也就是宏.现在简单说几个: 1.__FILE__用于指示本行语句所在源文件的文件名,如下(test.c): #include <stdio.h> voi ...

最新文章

  1. 【Oracle Database】数据库用户管理
  2. 1003. 我要通过!(20)
  3. (LeetCode 21)Merge Two Sorted Lists
  4. SQL Server:APPLY表运算符
  5. C++之------虚函数
  6. php插入word图片,如何在PHPOffice / PHPWord模板上添加/设置图像?
  7. python基础入门学习笔记 (2)
  8. java中什么是字节流和字符流_java中字节流与字符流的区别是什么
  9. 从ASP.NET Core 3.1中的当前URL获取主机信息
  10. micropython中文教程.pdf_micropython中文教程
  11. 同网关劫持与不同网关劫持实例
  12. Mac编译OpenJDK8:configure: error: Xcode 4 is required to build JDK 8, the version found was 10.1config
  13. 列线图计算每个患者得分,并生成Roc曲线。
  14. 树莓派USB摄像头的使用
  15. 表白网页制作_表白网页_创意表白_表白神器
  16. 新能源车动力总成技术探讨:混动和纯电之争、电驱动未来发展趋势
  17. wifi密码公式计算机,用定积分知识破译wifi密码,数学知识什么时候能派上用场?...
  18. 利用OpencvSharp计算工件移动后,机器人旋转中心(抓取位置)
  19. 解决C/C++报错error: cannot pass objects of non-trivially-copyable type ‘std::string’问题
  20. Qt中添加背景图片的方法

热门文章

  1. 教你如何在google上查阅一个方位的经纬度
  2. java线程交替执行_Java synchronized线程交替运行实现过程详解
  3. vs安装 c语言编译环境,Visual Studio Code安装与C/C++开发调试环境搭建
  4. 如何用孩子兄弟表示法存储树c语言,C语言,数据结构,树的孩子兄弟表示法,程序一切正常,但是有个问题不太懂了,园豆不多,帮帮忙,求助一下....
  5. python使用停用词表过滤词
  6. 新型冠状病毒肺炎国内分省分日期从1.16起的全部数据爬取与整理代码(附下载)
  7. grafana官方使用文档_5. Centos7 下部署使用 nmon2influxdb
  8. php网页如何做出透明的效果,css+filter实现简单的图片透明效果
  9. vb子程序未定义怎么改怎么办_vb中子程序或者函数未定义!求教解决方案,
  10. JDBC之数据库的连接步骤(六步)