我正在尝试分析 C# 中的一些代码。我在转换数字时遇到了一些误解问题,可能与 C# 代码中的 AND 操作有关。我有如下所示的代码。
public void SerialNumber(UInt32 number)
{
_sensorNumber=0;
if (number == 0)
number = (UInt32)(USB.Id << 16) | (_sensorNumber << 10) | 1;
SerialNumber = string.Format("{0}-{1}-{2}",
(number & 0xFFFF0000) >> 16,
(number & 0x0000FC00) >> 10,
number & 0x000003FF);
}
谁能清楚地解释我这段代码的作用?我需要在“序列号”行中进行解释。当我尝试调试这段代码时,我观察到两种不同的情况。
1)当我有数字= 65668097时;然后我得到“序列号 = 1002-0-1
2)当我有数字= 0时;它得到 USB.Id = 15152; 之后我不明白正在发生什么操作然后最后 number= 993001473 然后我得到“SerialNumber = 15152-0-1
请任何人都可以向我解释 AND,OR 操作发生了什么。