我有一个int(32)值Val打包形式
----------------------------------------
| 32-XXXXXXXXX-16 | 15-short-int-val-0 |
----------------------------------------
Run Code Online (Sandbox Code Playgroud)
Val如果我执行操作,从中提取短整数值时
short temp = Val & 0x0000FFFF;
Run Code Online (Sandbox Code Playgroud)
什么是操作的返回类型Val & 0x0000FFFF?我是否需要输入值以(short)(Val & 0x0000FFFFF)存储正确的数据temp?
由于我假设十六进制数字本身被视为无符号整数,因此出现了疑问.
上述操作与上述操作有何不同
short temp = Val & 0xFFFF;
Run Code Online (Sandbox Code Playgroud)
让我们假设32-bit int、16-bit short和8-bit char。
short temp = Val & 0x0000FFFF;
Run Code Online (Sandbox Code Playgroud)
Val属于 类型int。这也与 type0x0000FFFF相同。0xFFFFint
该表达式Val & 0x0000FFFF也是类型,并在对象初始化时int隐式转换为。shorttemp
所以:
操作 Val & 0x0000FFFF 的返回类型是什么?
往上看,int。
我是否需要将值类型转换为 (short)(Val & 0x0000FFFFF) 才能将正确的数据存储在 temp 中?
参见上文,否,因为表达式short在对象初始化时隐式转换为temp。
之所以产生疑问,是因为我假设十六进制数字本质上被视为无符号整数。
这是一个错误的假设,因为这里0x0000FFFF是有符号类型int。