微控制器中比較有符號數和無符號數

2022-06-28 12:45:10 字數 331 閱讀 2667

前提:2個數的位數是相同的,如都是8位或16位數。

第一步:先判斷2個數是否相等。

第二步:再判斷2個數的符號。 如果是一正一負,則正數大。

第三步:如果符號相同,不要再分為同負比較或同正比較。直接全部當作無符號來比較,大的為大數。

同為負數的情況下,不要轉換為正數,然後比較正數大小,再倒轉為正數大的反而小。

舉例: -66 = 0xbe,-67=0xbd;    0xbe = 190,0xbd=189, 0xbe>0xbd.

如果2個比較的數字數不同,如其中乙個為16位數,-66 = 0xffbe, 0xffbe = 65470 > 190. 判斷會出錯。

無符號數與有符號數比較

2012 04 24 19 30 2555人閱讀收藏 舉報擴充套件 先出幾個題目,再解釋一下為什麼答案是那樣的。題目一 int a 1 unsigned int b 1 printf d a b 結果輸出 1 因為無符號數與有符號數比較時,要將有符號數轉化為無符號數,再來比較。a轉化為無符號數後就是...

無符號數與有符號數比較

1轉化為無符號數 65535 在計算機中負數是用補碼表示的,即反碼加1 正數直接用原碼表示 因為 1是負數就用補碼表示為 00000000 00000001 的反碼 11111111 11111110 1 即 11111111 11111111 轉換為十進位制數為65535 最高位為符號位不必考慮 ...

有符號數和無符號數

有符號和無符號整數 1.通常情況下,大多數字預設的是有符號數,比如 4,5 要想寫乙個無符號數必須在後面加u 比如 4u,5u 2.在計算機中有符號數是用補碼的形式來表示的,最高位是符號位。無符號數就是正數唄 正數的補碼和原碼相同。比如 1 在計算機中表示為 11111111 11111111 11...