2016 组成原理 类型转换 选择题
第 13 题

有如下C 语言程序段

short si = -32767;

unsigned short usi =si;

执行上述两条语句后,usi的 值 为 ( ) 。

A. -32767 B. 32767 C. 32768 D. 32769

[tag_link]

正确答案:D

结合题干及选项可知,short 为 16 位。因 C 语言中的数据在内存中为 补码表示 ,si 对应的补码二进制表示为:1000 0000 0000 0001B, 最前面的一位 “1” 为符号位,表示负数,即 -32767。由 signed 型转化为等长 unsigned 型数据时,符号位成为数据的一部分,也就是说,负数转化为无符号数(即正数),其数值将发生变化。usi 对应的补码二进制表示与 si 的表示相同,但表示正数,为 32769。