无符号短整型左移而不会溢出成整数
Left shift on an unsigned short without overflow into an integer
如果我有一个 ushort 变量,它是 0xFFAA,我将它左移 8 位,我会得到一个整数而不是一个无符号的短整型,为什么?
放一张图让你更清楚,我的意思:
有没有办法从这个左移得到一个 16 位变量,而不用将 int 转换为 unsigned short?
如果你想确保只设置变量的低 16 位,你可以使用逻辑 AND:
来屏蔽 0xFFFF
var supposed = (test << 8) & 0xFFFF;
如果我有一个 ushort 变量,它是 0xFFAA,我将它左移 8 位,我会得到一个整数而不是一个无符号的短整型,为什么? 放一张图让你更清楚,我的意思:
有没有办法从这个左移得到一个 16 位变量,而不用将 int 转换为 unsigned short?
如果你想确保只设置变量的低 16 位,你可以使用逻辑 AND:
来屏蔽0xFFFF
var supposed = (test << 8) & 0xFFFF;