【发布时间】:2015-12-02 10:30:31
【问题描述】:
所以我最近学习了将浮点数表示为二进制字符串的方法,我遇到了一个非常烦人的困惑。
假设我有浮点数 10.25。在二进制中,这将是 1010.01
取指数,这将是 1.01001 x 2^(3)。 所以符号位为0,指数为127 + 3的无符号8位二进制, 这将成为 10000010。 现在对于小数部分,这应该是 00000000 00000000 0001001(23 位)
把它们放在一起,0 10000010 00000000 00000000 0001001。
但是当我把它放到一个转换网站上时,它给了我这个: 似乎尾数部分已被每 8 位翻转,可能是因为小端实现。但事情就是这样。
从大端尾数 00000000 00000000 0001001,
Little Endian Mantissa 不应该是 10010000 00000000 0000000 吗?
图片说二进制字符串是0 10000010 0100100 00000000 00000000
【问题讨论】:
-
如果我是对的,大端和小端转换仅适用于无符号整数。浮动管理有很多标准,可能小端和大端系统不使用相同的标准。
-
您是指
float还是decimal number?将您的数字分成整数和小数部分。分别将每个转换为二进制字符串数字,然后将它们放在一起。
标签: c floating-point