相信学完计算机系统的小伙伴都有这个疑惑,接下来的保姆级教程,一定可以让你恍然大悟!!
unsigned short 1与char -1谁更大
首先short和char不管有无符号都要转化为int型进行比较
●unsigned short 1转化为int
无符号数按原码存,所以unsigned short的二进制为0000 0000 0000 0001,因为是无符号数,所以按0扩展为int的0000 0000 0000 0000 0000 0000 0000 0001,因为是有符号int,第一位为0,是正数,所以转化为十进制就是2的0次方为1。
●char -1转化为int
有符号数按补码存,所以char的原码是1000 0001,补码为1111 1111,因为是有符号数,所以按符号位扩展为int的1111 1111 1111 1111 1111 1111 1111 1111,因为是有符号int,第一位是1,是负数,所以符号位不变,其余各位取反加1,为1000 0000 0000 0000 0000 0000 0000 0001,转化为十进制就是-1。
最后得出unsigned short 1>char -1
(即int 1>int -1)
注意点:
1.有符号和无符号扩展不同,有符号按符号位扩展,无符号按0扩展。
2.正数(无符号数)按原码储存,负数按补码储存。
3.有符号数二进制转化为十进制,第一位为符号位,若为0,则直接转化,若为1,则符号位不变,各位取反加1,再转化为十进制。
4.比int小的数据类型进行数值大小比较都要转化为int型的二进制,再转化为十进制比较大小。