2014-01-15 64 views
-1

我把数据保存为一个无符号字符,并使用上半部分作为负数的条件。有没有办法定义一个常数NEGATIVE,例如,它的值是128到255?有没有办法在C中定义一个数字范围作为常量?

所以,如果(X ==负)当x是而不是简单地使用(X>阴性)和至127

由于分配NEGATIVE 128和255之间。

+1

为什么不将NEGATIVE定义为127? –

+0

通常,你用'#define NEGATIVE 127'定义一个'NEGATIVE'并按上面的代码所示使用。 –

+0

下面的部分被用作正面。该应用程序具有正值,通常不会超过40,并且具有相同大小的负数(例如回滚到215)。 – mcallinder

回答

1

您无法定义范围并测试它是否相等。取决于您的数据的解释,有多种方法可行:

#define isNegative(x) ((x) >= 128) 
#define isNegative(x) (((x) & 0x80) != 0) 
#define isNegative(x) ((signed char)(x) < 0) 
+0

@Mark - user3125367的回答解决了您的问题。当数值超过127(128到255)时,你想使用char(8位)来表示负数。在8位中,范围在128到255之间的数字之间的通用性是第一位是1.对于范围在0到127之间的值,这个第一位是0。您肯定可以按照user3125367在他的第二个示例中所述屏蔽该位。 – alvits

+0

对于全面的解决方案虽然不需要, :) – alvits

相关问题