2014-01-15 66 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

相關問題