理解有符号数和无符号数 2008-09-23 14:15 负数在计算机中如何表示呢
这一点,你可能听过两种不同的回答
一种是教科书,它会告诉你:计算机用“补码”表示负数
可是有关“补码”的概念一说就得一节课,这一些我们需要在第 6 章中用一章的篇幅讲2 进制的一切
再者,用“补码”表示负数,其实一种公式,公式的作用在于告诉你,想得问题的答案,应该如何计算
却并没有告诉你为什么用这个公式就可以和答案
另一种是一些程序员告诉你的:用二进制数的最高位表示符号,最高位是0,表示正数,最高位是1,表示负数
这种说法本身没错,可是如果没有下文,那么它就是错的
至少它不能解释,为什么字符类型的-1 用二进制表示是“1111 1111”(16 进制为 FF);而不是我们更能理解的“1000 0001”
(为什么说后者更好理解呢
因为既然说最高位是1 时表示负数,那 1000 0001 不是正好是-1吗
让我们从头说起
1、你自已决定是否需要有正负
就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我们必须自已决定某个量是否需要正负
如果这个量不会有负值,那么我们可以定它为带正负的类型
在计算机中,可以区分正负的类型,称为有符类型,无正负的类型(只有正值),称为无符类型
数值类型分为整型或实型,其中整型又分为无符类型或有符类型,而实型则 只有符类型
字符类型也 分为有符和无符类型
比 如有两个量,年 龄 和库 存 ,我们可以定前 者为无符的字符类型,后者定为有符的整数类型
2、使用二制数中的最高位表示正负
首 先 得知 道 最高位是哪 一位
1 个字节的类型,如字符类型,最高位是第 7 位,2 个字节的数,最高位是第 15 位,4 个字节的数,最高位是第 31 位
不同长 度的数值类型,其最高位也 就不同,但 总 是最左 边 的那位(如下示意 )