【发布时间】:2016-02-19 10:27:13
【问题描述】:
我知道如何使用 % 2 和 / 2 将浮点数转换为二进制表示,但是有没有捷径或更简洁的方法呢?我在做什么甚至被认为是按位表示浮点数吗?因为我应该在两个浮点数之间使用按位比较,但我不确定这是否意味着使用按位运算。
例如,要获得一个数字的二进制表示,我会将 10 % 2 之类的数字的结果存储到一个数组中,直到该数字在 while 循环内达到 0,如果要向后打印该数组,它将表示二进制数。
array[] = num % 2;
num = num / 2;
我所做的是对两个浮点数使用上面的方法,将它们加载到各自的数组中,然后通过它们的数组比较它们。
我也在它们的数组中以 IEEE 浮点格式设置它们。
编辑:我必须通过按位比较和运算来比较两个浮点类型的数字,以查看一个数字是否大于、小于或是否与以有偏指数表示法表示的浮点数相等。具体是它测试一个浮点数 number1 是否小于、等于或大于另一个浮点数 number2,方法是简单地使用从左到右的按位比较来按位比较它们的浮点表示,一旦第一个就停止遇到不同的位。
【问题讨论】:
-
计算机上常用的浮点格式是IEEE floating point format。在两个这样的数字之间进行逐位比较根本没有意义。
-
不太确定是否可以通过
%2或/2获得float 的二进制表示。 -
如果您想查看浮点数的二进制表示,您不能只使用
/ 2和% 2,因为它们只会为您提供有关数字的数字解释的信息,而不是它的按位表示。要查看它的表示,您可以将其放入具有相同大小的整数类型的union(这取决于机器)或相同大小的char数组(也取决于机器,但您可以使用sizeof获取它),存储到float成员,然后访问其他成员以查看存储的内容。还要注意大端与小端表示。 -
不清楚您要问的是两个完全不同的事情中的哪一个。你想要浮点数的内部按位表示吗?或者你想要二进制的数字?这些根本不一样,因为浮点数的内部按位表示是浮点数。例如,2 和 16 以相同的尾数和大于 4 的指数存储。除以二只是移动一个二进制点。它不会移出位。
-
您只希望在 C 中对两个
float类型的变量进行按位比较是否正确?因为您的想法不正确,如果您澄清这是您的目标,我们可以帮助您。
标签: c