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

发布网友 发布时间:2022-04-23 09:37

我来回答

3个回答

热心网友 时间:2023-10-09 17:33

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

另外,扩展的时候,有符号数扩展最高位,无符号数0扩展。
对0xf0扩展到16位,做有符号数时,扩展最高位1,得到0b1111 1111 1111 0000。保证有符号数扩展后,值不变。做无符号数时扩展0,得到0b0000 0000 1111 0000。扩展前后值也没有发生变化。

热心网友 时间:2023-10-09 17:33

同样是16位二进制的整数, short int x; unsigned short int y; 有符号整型 要 消耗 1 位 用来做符号,剩下的15位 用来存数值。与无符号整型 不

热心网友 时间:2023-10-09 17:34

无符号整型的第一位是数据,有符号整型的第一位是符号位。比如八位的十六进制数:unsigned int 0x50 代表的二进制数就是01010000,换算成十进制数就是正数96,而如果把0x50定义为带符号的整型,它的二进制仍然是01010000,这时的第一位0代表的就是符号,第一位为0代表正数,为1则代表负数,0x50在这里仍然是正数96;如果是0x90,无符号的就是十进制数160,有符号的就是十进制的—32.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com