无符号短路左移而不溢出为整数

时间:2016-06-01 13:48:26

标签: c# bit-manipulation overflow bit-shift

如果我有一个ushort变量0xFFAA并且我左移8位,我会得到一个整数而不是无符号短,为什么? 这张图片让你更清楚,我的意思是:

enter image description here

有没有办法从这个左移位获得一个16位变量而不将int转换为无符号短整数?

1 个答案:

答案 0 :(得分:1)

如果要确保只设置变量的低16位,可以使用逻辑AND屏蔽0xFFFF

var supposed = (test << 8) & 0xFFFF;