回覆列表
  • 1 # 使用者9244747964999

    0xFFF1 表示的 是 無符號數 還是 有符號數,16位還是32位?

    16位 有符號數 則為補碼。

    32位 或 16位 無符號數 = F*16^3 + F * 16^2 + F * 16^1 + 1 * 16^0

    用C 語言:

    printf("%d %u\n",(short) 0xfff1, (unsigned short) 0xfff1); // 一個有符號,另一個無符號

    -0x800F 需要明確 減去的 是 16位還是32位,無符號數 還是 有符號數補碼,

    先計算

    printf("%d %u\n",(short) 0x800f, (unsigned short) 0x800f);

    無符號數 = 8 * 16^3 + F

    再考慮符號。

    8進位制 也同樣需要明確 16位還是32位,無符號數 還是 有符號數。

    無符號數 1*8^5 + 7 * 8^4 + 7 * 8^3 + 5 * 8^2 + 0 * 8^1 + 1

    用C 語言: printf("%d %u\n",(short) 0177501, (unsigned short) 0177501);

    ------

    記住,計算機內 負數用補碼錶示。負數的補碼是按2進位制, 不計符號位 取各位的反碼 再加 1。

    從 補碼 找原碼:減1 取反

  • 中秋節和大豐收的關聯?
  • 為什麼有些人冬天手一直是冰冷的?