首页 > 试题广场 >

得到y 的机器数为( )。

[单选题]
假设编译器规定int 和 short 类型长度分别为 32 位和 16 位,若有下列 C 语言语句:
unsigned short x = 65530;
unsigned int y = x; 
得到y 的机器数为( )。
  • 0000 7FFAH
  • 0000 FFFAH
  • FFFF 7FFAH
  • FFFF FFFAH
这道题其实是求y=65530(无符号数)的十六进制表示方法。
答案中的最后一位H代表的是十六进制表示法。十六进制的数为0-9,A-F,其中A代表10,B代表11,C代表12,D代表13,E代表14,F代表15.
将B中的0000 FFFAH转换成十进制得,15*16^3+15*16^2+15*16^1+10*16^0=65530
发表于 2020-05-27 14:50:09 回复(0)
这题根本没有什么补码问题。因为unsigned short,所以装65530是完全够的,没有溢出。
因此就很简单了。也就是把65530写成十六进制表示就可以了。
结果为00000000 00000000 11111111 11111010。故十六进制为0000 FFFA
发表于 2021-12-14 18:18:58 回复(3)
这个我是懵的....
发表于 2017-04-13 17:49:12 回复(0)
无符号数全部是数值位,由短变长补0 有符号数,最高位是符号位,由短变长补符号位
编辑于 2023-02-19 17:21:07 回复(0)
unsigned类型的整形提升高位始终补0 如果是short x =65530; 提升到int,高位会补1。
发表于 2022-09-05 09:13:50 回复(0)
unsigned short 范围0-65535
发表于 2022-03-04 14:21:21 回复(0)
unsigned  short类型的x赋给unsigned  int的时候要发生整形提升,但应为是无符号整数,所以高位补零
编辑于 2024-03-13 17:35:05 回复(0)
无符号短整型short 占两个字节 16位   取值范围是 (0——2^16-1)2^16-1=25536-1=25535
数据没有溢出。
最后一位H表示16进制数。
无符号数 有符号正数  原码= 补码==反码。
看B 0000 7FFA 转为二进制 0000 0000 0000 0000 0111 1111 1111 1010 --》2^16=25536 -->前面15位都为1 则为 25535 --》再考虑-5 最后4位 0101-》 0000 0000 0000 0000 0111 1111 1111 1010

发表于 2023-07-31 21:10:33 回复(0)
short到int会自动向上转型,高位补0,因此是B
发表于 2019-02-07 15:36:16 回复(0)