C#에서 일부 코드를 분석하려고합니다. 변환 숫자에 대한 오해의 문제가 있고 C# 코드의 AND 연산과 함께있을 수 있습니다. 나는 아래와 같은 코드를 가지고있다.내 C 코드에서 AND 또는 OR 연산에 대한 설명
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"줄에 설명이 필요합니다. 이 코드를 디버깅하려고 할 때 두 가지 상황을 관찰하고 있습니다.
1) 숫자가 65668097 인 경우 1) 다음 내가 무엇입니까 "의 serialNumber = 1002-0-1
2) 내가 수 = 0이있을 때하며 그것은 점점 USB.Id = 15,152, 그리고 그 후 나는 작업이 걸리는 것을 이해하지 못했다 그때 마침내 번호 = 993001473 그때 나는 "SerialNumber = 15152-0-1을 얻고있다
제발 아무도 나에게 어떤 일이 일어 났는지 설명 할 수 없다.
이 함수는 적절한 입력 값을 요구하지만 0은 적절한 입력이 아니므로 현재의 USB ID ('USB.Id')에서 기본 시리얼'number'가 생성됩니다. 이것이 비트 OR이 사용되는 라인에 대한 설명입니다. – Liviu