我有两个UInt16值
private UInt16 leastSignificantWord;
private UInt16 mostSignificantWord;
这两个单词(UInt16值)来自一个组件,它将UInt32状态/错误值分成两个单词并返回这两个单词。现在我需要回到UInt32值。把这两个词加在一起是不行的,因为无论是最重要还是最不重要的。
例如:
private UInt16 leastSignificantWord = 1;
private UInt16 mostSignificantWord = 1;
//result contains the value 2 after sum both words
//which can not be correct because we have to take note of the most and least significant
UInt32 result = leastSignificantWord + mostSignificantWord;
有没有办法解决这个问题?说实话,我从来没有在c#中使用位/字节,所以我从来没有遇到过这样的问题。提前致谢
答案 0 :(得分:3)
private UInt16 leastSignificantWord = 1;
private UInt16 mostSignificantWord = 1;
UInt32 result = (leastSignificantWord << 16) + mostSignificantWord;
你有2个UInt16(16位和16位)
一个0010 1011 1010 1110
和第二个1001 0111 0100 0110
如果您将此2 UIn16作为一个UInt32阅读,您将获得0010 1011 1010 1110 1001 0111 0100 0110
因此,(leastSignificantWord << 16)
为您提供0010 1011 1010 1110 0000 0000 0000 0000
,此加mostSignificantWord
为您提供0010 1011 1010 1110 1001 0111 0100 0110
这些可能会有所帮助
http://msdn.microsoft.com/en-us/library/a1sway8w.aspx
What are bitwise shift (bit-shift) operators and how do they work?