首页 > 试题广场 >

有如下C语言程序段shortsi=-32767;unsign

[单选题]
有如下 C 语言程序段
short si = -32767;
unsigned short usi = si;
执行上述两条语句后,usi 的值为
  • -32767
  • 32767
  • 32768
  • 32769
-32767的原码用二进制表示为 1111 1111 1111 1111   ()   ,用机器码表示 则为 1000 0000 0000 0001,将该值赋给无符号型short ,那么usi的机器码就是1000 0000 0000 0001,最高位的1不再代表符号位,对应的数值就是    = 35768 + 1 =35769
发表于 2021-12-18 08:59:43 回复(0)
short为16位,C语言中的数据在内存中为补码表示形式,si对应的补码二进制形式表示为1000 0000 0000 0001B,最前面的一位“1”为符号位,表示负数,即-32767。由signed型转化为等长的unsigned型数据时,符号位成为数据的一部分,即负数转化为无符号树数(即正数)时,其数值将发生变化。usi对应的补码二进制表示与si的表示相同,但表示正数,为32769
发表于 2021-09-17 17:43:57 回复(0)
D
发表于 2023-02-22 20:11:06 回复(0)