有符号的基本类型的取值范围是-32768~32767即-2的15次方~2的15次方减1.我不明白为什么要减去1.

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 03:04:49

有符号的基本类型的取值范围是-32768~32767即-2的15次方~2的15次方减1.我不明白为什么要减去1.
有符号的基本类型的取值范围是-32768~32767即-2的15次方~2的15次方减1.我不明白为什么要减去1.

有符号的基本类型的取值范围是-32768~32767即-2的15次方~2的15次方减1.我不明白为什么要减去1.
从最简单的问题说起吧.
最简单的一位(1bit)二进制,表示无符号数的话,只有0和1.没办法表示有符号数(只能表示两个数,你不能不表示0吧).
如果是两位(两bit)二进制,表示无符号数的话,就可以有0/1/2/3.
表示无符号数的话,就要拿第一位来做符号标示,比如0代表正数,1代表负数,这样就可以表示四个有符号数.就像下面这样:
00 ---- 0
01 ---- +1
11 ---- -1
你也许会问了,10哪去了?好,00已经代表0了,那10怎么办,你不能叫它负0吧?估计有符号数的创始人为了不浪费,将10定义为-2,于是:
00 ---- 0
01 ---- +1
10 ---- -2
11 ---- -1
明白了吗?2位(2bit)二进制能表示的有符号数是+1/0/-1/-2,不管位数怎么增加,10是-1这点是不会改变了(否则可能引起全世界的程序出错/电脑死机/硬件罢工...等等一系列问题)所以正数始终比负数少1个.
于是乎到了两字节(16bit)二进制,能表示的有符号数就是-32768~32767了,明白了吗?