日期:2014-05-18  浏览次数:20855 次

C#数据与或运算
定义了一个常量:
private const UInt16 FREEZE = 0x0001;

定义了一个变量,并初始化为0
UInt16 m_dwAckInstruction = 0 ;
UInt32 dwPar =0x00;

进行如下运算:
m_dwAckInstruction &= ~FREEZE;
m_dwAckInstruction |= dwPar & FREEZE;

在编译时,运算过程报错,
错误 常量值“-2”无法转换为“ushort”
错误 无法将类型“uint”隐式转换为“ushort”。存在一个显式转换(是否缺少强制转换?)



请高手指点,如何进行位运算,这个过程哪里不对,谢谢!

------解决方案--------------------
探讨

引用:
定义了一个常量:
private const UInt16 FREEZE = 0x0001;

定义了一个变量,并初始化为0
UInt16 m_dwAckInstruction = 0 ;
UInt32 dwPar =0x00;

进行如下运算:
m_dwAckInstruction &= ~FREEZE;
m_dwA……

------解决方案--------------------

UInt16 m_dwAckInstruction = 0;
UInt32 dwPar = 0x00;
m_dwAckInstruction = (UInt16)(m_dwAckInstruction & (~FREEZE));
m_dwAckInstruction = (UInt16)(m_dwAckInstruction | (dwPar & FREEZE));