c언어 비트연산 예제

Off
Non classé

일부 CAD 시스템에서 가져온 CreateFileMapping 함수 작업의 예를 생각해 보십시오: 당사의 OOO « 프로그램 검증 시스템 »은 C/C++ 응용 프로그램의 코드에서 64비트 오류를 감지하는 특수 정적 분석기 Viva64를 개발합니다. 이 개발 과정에서 64비트 결함의 예 모음을 지속적으로 확대하여 이 문서에서 가장 흥미로운 결함을 수집하기로 결정했습니다. 여기서는 실제 응용 프로그램의 코드에서 직접 가져온 예제를 찾을 수 있으며 네이티브 코드 전체에서 이러한 오류가 너무 « 확장 »되므로 실제 코드에 의존하여 종합적으로 구성됩니다. 지금까지 는 주어진 비트에 의해 부호없는 정수 숫자를 오른쪽 또는 왼쪽으로 이동하는 것을 고려하고 따라서 제로로 빈 공간을 생성했습니다. 산술 오른쪽 시프트가 음수에서 수행되면 사인 비트가 시프트에서 생성된 빈 슬롯에 복사됩니다. 예를 들어 위의 예는 소수점 표기형에서 -4입니다. 이제 이진 표기법의 최대 값과 최소 값을 서명되지 않은 데이터 형식의 값을 찾는 방법을 알아보실 수 있습니다. 이 문서는 C 및 C++ 언어에서 64비트 오류의 가장 완벽한 예제 모음입니다. 이 문서는 Visual C++를 사용하는 Windows 응용 프로그램 개발자를 위한 것이지만 다른 프로그래머에게도 사용됩니다. CRC는 컴퓨터 간에 저장 되거나 전송되는 데이터의 손상을 감지할 수 있는 강력한 유형의 체크섬입니다. 일반적으로 CRC는 전용 하드웨어에서 가장 효율적으로 계산됩니다. 그러나 경우에 따라 임베디드 시스템에서 실행되는 C 또는 C++ 프로그램에서 와 같은 소프트웨어에서 CRC를 계산해야 합니다.

코드 조각이 #ifdef -#else -#endif 긴 역사를 가진 프로그램에서 구문으로 래핑되는 경우가 종종 있습니다. 프로그램을 새 아키텍처로 포팅할 때 잘못 작성된 조건으로 인해 개발자가 의도한 코드 조각 이외의 코드 조각이 편집될 수 있습니다(그림 3 참조). 예: 이전 블로그 게시물에서 간단한 예제로 64비트 오류를 설명하는 것이 어려운 이유를 말씀드리기로 약속했습니다. … 위의 예제는 -1 + -32,767이며 소수점 수 표기이인 -32,768이며 서명된 짧은 int 데이터 형식의 최소 값입니다. 다시 말하지만 서명된 데이터 형식에 대한 네거티브는 모두 1로 시작하여 0을 계산합니다. 아래 예제를 보십시오. 사용되지 않는 프로그램, 특히 C로 작성된 프로그램에서는 포인터가 int 형식에 저장되는 코드 조각이 종종 표시될 수 있습니다.

Comments are closed.