程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

有相当于octave命令`format bit`的python吗?

发布于2019-10-14 17:46     阅读(1544)     评论(0)     点赞(7)     收藏(0)


以八度为单位,该命令之后的所有数字输出format bit将显示存储在内存中的数字的本机位表示。例如,

octave:1> format bit
octave:2> 0.5
ans = 0011111111100000000000000000000000000000000000000000000000000000
octave:7> 2
ans = 0100000000000000000000000000000000000000000000000000000000000000
octave:3> format
octave:4> 0.5
ans = 0.50000

python中是否有一个等效的命令以其本机位表示形式显示所有数字(因此输出如下所示)?

>>> "equivalent of the octave format bit command"
>>> 0.5
0011111111100000000000000000000000000000000000000000000000000000

(这与0.5的二进制表示形式非常不同。)


解决方案


TL; DR; 不,没有Python等效项

使用Python时,您不需要此信息。就像使用八度一样设置“输出模式”是不可能的(无需修改Python本身)。如果您确实希望所有输出都使用默认格式以外的其他格式,则可以为此编写自定义函数,print如果使用的是Python 3 ,甚至可以覆盖默认函数。

如果只想查看数字的二进制表示形式,则可以bin(number)对整数使用函数。对于花车,您可以使用float.hex(number)

如果我们真的想看到内部代表,则需要一些工作,一点点的黑魔法和ctypes图书馆。使用Python来获取此数据并不容易(或无论如何可用),但是我创建了一个函数,向我们展示了内部如何表示float:

我们知道Python中的浮点数是IEEE 754双精度浮点数,因此它们使用8字节(64位)的内存。

import ctypes

def show_float(x):
    asdouble = ctypes.c_double(x)
    xpointer = ctypes.addressof(asdouble)
    xdata = ctypes.string_at(xpointer, 8)
    print "".join([bin(ord(i))[2:] for i in xdata])

x = 3.14
show_float(x) # prints 1111110000101111010111010001101110001111010011000000

整数比较难,因为在所有实现中表示都不相同。您可以在这里找到一个示例



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/136449/d7615a1392ceb4e9442a/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

7 0
收藏该文
已收藏

评论内容:(最多支持255个字符)