간단한 원 라이너를 찾고 있다면 이것이 64 또는 32 를 반환하는 가장 신뢰할 수있는 솔루션입니다 . ARM을 실행 중인지 여부에 관계없이 bash 또는 sh를 사용하는 모든 시스템에서 작동해야합니다 .
이것은 시스템이 32 비트 또는 64 비트라고 가정합니다. 8-16 비트 또는 다른 비트 구조를 감지해야하는 경우 아래 설명을 참조하십시오.
[$ ((0xffffffff)) -eq -1] && 에코 32 || 에코 64
여기서 뭐하는거야?
논리는 매우 간단하며 컴퓨터가 부호있는 정수를 저장하는 방식으로 요약됩니다. 32 비트 아키텍처에는 부호있는 정수를 저장하는 데 사용할 수있는 32 비트 만 있고 64 비트 아키텍처에는 64 비트가 있습니다! 즉, 저장할 수있는 정수 세트는 유한합니다. 이 세트의 절반은 음수를 나타내고 절반은 양수를 나타냅니다. -1과 같은 부호있는 정수는 해당 아키텍처에 대해 주어진 비트 수로 저장할 수있는 가장 큰 숫자로 표시됩니다. 32 비트 시스템에서 -1은 16 진 값 0xFFFFFFFF (32 개의 이진 비트, 모두 1)로 표시 될 수 있습니다. 64 비트 시스템에서 0xFFFFFFFF는 기본 10 인 4,294,967,295로 변환되는 반면 0xFFFFFFFFFFFFFFFFFF는 -1을 나타냅니다. 8x 또는 16 비트 시스템뿐만 아니라 0xFF 및 0xFFFF에서 -1 인 시스템에 대해 어떻게 쉽게 확장되는지 확인할 수 있습니다.
uname -m
와uname -m
?