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);
}
このコードの機能を明確に説明できる人はいますか? 「SerialNumber」行に説明が必要です。このコードをデバッグしようとしたとき、2 つの異なる状況が観察されました。
1)私が番号を持っているとき= 65668097; 次に、「SerialNumber = 1002-0-1」を取得しています
2) 番号 = 0 の場合。USB.Id = 15152; を取得しています。その後、どのような操作が行われているのか理解できず、最終的に number= 993001473 となり、"SerialNumber = 15152-0-1
AND、OR演算で何が起こっているのか誰か説明してください。