有符号整型相对于无符号整型而言, 无符号整型用于表示正整数, 无符号整型可同时表示正数和负数.

无符号整型的二进制表示绝大部分就是普通的二进制表示, 即 00 对应 0, 01 对应 1, 10 对应 2, 11 对应 3, 因此 2 位无符号整型表示范围为 0~3, n 位无符号整型表示范围为 0~2^n.

有符号整型的二进制表示法有若干种, 如补码, 反码等, 最为常用的是补码 (twos' completion) 表示, 即 "以第 1 位作为符号位, 符号位置 1 时其余位取反再加 1", 如 10 表示负数, 其值为 0 -> 1 -> 2, 所以 10 表示 -2, 同样 11 表示负数, 其值为 1 -> 0 -> 1, 所以 11 表示 -1, 正数的表示不变, 如 01 表示 1, 当然 00 仍表示 0, 因此 2 位 (包括符号位) 有符号整型的补码表示范围为 -2~1, n 位有符号整型的补码表示范围为 -[2^(n-1)]~2^(n-1)-1.

溢出

因为整型在计算机中用二进制表示, 所以在进行整数计算时容易出现溢出问题, 比如, 32 位有符号整型 (int32) 的表示范围为 -[2^(31)]~2^(31-1)-1, 即 -2,147,483,648~2,147,483,647, 如果计算两个整数之和 2,147,483,647 + 1 并尝试将其赋值给一个 32 位有符号整型, 即出现溢出问题.