C语言中无符号整型与带符号整型中这“符号”指的是什么?请举些例子

消耗一位用来做符号?那是什么符号

指是否将整数的最高位作为符号位。一般地,当代计算机以最高位1表示负数,0表示非负数;用2的补码形式存储负数。
0xf0,二进制0b1111 0000。
有符号数,将最高位作为符号位,表示的是-16. 补码的计算过程是,不考虑符号位,其余位取反再加一,即0b111 0000 -> 0b000 1111 -> 0b001 0000 = 16. 之后加上负号,得到-16.
无符号数,最高位不是符号位,表示240. 即 128+64+32+16 = 240

另外,扩展的时候,有符号数扩展最高位,无符号数0扩展。
对0xf0扩展到16位,做有符号数时,扩展最高位1,得到0b1111 1111 1111 0000。保证有符号数扩展后,值不变。做无符号数时扩展0,得到0b0000 0000 1111 0000。扩展前后值也没有发生变化。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-26
同样是16位二进制的整数, short int x; unsigned short int y; 有符号整型 要 消耗 1 位 用来做符号,剩下的15位 用来存数值。与无符号整型 不
第2个回答  2011-09-26
无符号整型的第一位是数据,有符号整型的第一位是符号位。比如八位的十六进制数:unsigned int 0x50 代表的二进制数就是01010000,换算成十进制数就是正数96,而如果把0x50定义为带符号的整型,它的二进制仍然是01010000,这时的第一位0代表的就是符号,第一位为0代表正数,为1则代表负数,0x50在这里仍然是正数96;如果是0x90,无符号的就是十进制数160,有符号的就是十进制的—32.
相似回答