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

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 16:46:31
有符号的基本类型的取值范围是-32768~32767即-2的15次方~2的15次方减1.我不明白为什么要减去1.
xTRA\؝򒲒|E. U"hn*^_H$[E=>-VIn1/Ù*]~C5)C"Ay Izx0&o&7[g'._&!fS' ^Rǣ~ha2> w>/t~U"t7FA Fv GZ=P'Bez)q_NK~|Ma!vI-xpXe7E#y`MU:[Nk>jUvU+GHx-$4覾 %y`-+-jLc,b2}X)љ}OU;(%%5B"fS'9;m5 c%׊"52" Pj瞉C'%*1{G5 ܷFC̢MbHz?Crt22dX Iyk^\Z#F.u 28PZ$.(mJ / d({ЃD`4D17pXC0HPu6K,]8jUIJy&9y`^RRؐ_&e:ފcYyK;>m x/?4ʫϹPU[."4Υn\sa4@6~9 &iH#7}qK~~xZ

有符号的基本类型的取值范围是-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了,明白了吗?