programing

8진수 리터럴:언제? 왜? 한번도?

prostudy 2022. 4. 25. 21:33
반응형

8진수 리터럴:언제? 왜? 한번도?

나는 내 코드에 8진수를 사용한 적도 없고, 그것을 사용한 어떤 코드도 우연히 만난 적이 없다.

1994년경부터 C/C++로 프로그래밍을 시작했는데, 내가 너무 어려서 그런 건 아닐까?오래된 코드가 8진법을 사용하니?C는 0을 미리 입력하여 이들에 대한 지원을 포함하지만, 이 기본 8 숫자 리터럴을 사용하는 코드는 어디에 있는가?

최근 3비트 필드에 접속하는 네트워크 프로토콜 코드를 작성해야 했다.옥탈은 당신이 그것을 디버깅하고 싶을 때 유용하다.

단지 효과를 위해서, 이것의 3비트 필드가 무엇인지 말해줄 수 있니?

0x492492

반면, 팔분의 이 숫자는 다음과 같다.

022222222

자, 마지막으로 이진수(3인 그룹):

010 010 010 010 010 010 010 010

나는 내 코드에 8진수를 사용한 적도 없고, 그것을 사용한 어떤 코드는 우연히 만난 적도 없다.

틀림없이 그랬을 거야.표준에 따르면 0으로 시작하는 숫자 리터럴은 8진법이다.여기에는, 사소한 것들도 포함된다.0문자 그대로의 0을 사용하거나 볼 때마다, 이것은 8진법이었다.이상하지만 사실이다. :-)

내가 요즘 팔각 리터럴을 접하게 되는 유일한 장소는 Linux에서 파일의 권한 비트를 다룰 때인데, 보통 3 8각 숫자로 표시되며, 각 숫자는 파일 소유자, 그룹 및 기타 사용자에 대한 권한을 각각 나타낸다.

예: 0755(또한 대부분의 명령줄 도구가 있는 755만 해당)는 파일 소유자가 전체 권한(읽기, 쓰기, 실행)을 가지며, 그룹 및 기타 사용자는 읽기 및 실행 권한만 가지고 있음을 의미한다.

이러한 비트를 8진법으로 표현하면 어떤 권한이 설정되는지 쉽게 알 수 있다.0755가 무슨 뜻인지 한눈에 알 수 있지만 493이나 0x1ed는 아니다.

위키백과에서

원래 8진법이 컴퓨팅에 널리 사용되기 시작했을 때 IBM 메인프레임과 같은 시스템은 24비트(36비트) 단어를 사용했다.8자리(또는 12자리)가 기계 단어 전체를 간결하게 표시할 수 있기 때문에, 옥탈은 이러한 기계에 이상적인 이진수 약어였다.또한 운영자 콘솔에 닉시 튜브, 7세그먼트 디스플레이, 계산기를 사용할 수 있도록 하여 비용을 절감했다. 2진 디스플레이는 사용이 너무 복잡하고, 10진 디스플레이는 라디스를 변환하기 위한 복잡한 하드웨어가 필요하며, 문자 표시에 필요한 16진 디스플레이가 필요했다.

그러나 현대의 모든 컴퓨팅 플랫폼은 16비트, 32비트 또는 64비트 단어를 사용하며, 8비트가 바이트를 구성한다.그러한 시스템에서는 세 개의 8진수가 필요할 것이며, 가장 유의한 8진수는 2진수만 나타낸다(열에서 동일한 8진수는 다음 바이트에서 1진수까지 나타냄).따라서 16진수는 4개의 이진수를 포함하며 현대의 모든 컴퓨팅 플랫폼은 4개로 균등하게 구분되는 기계어를 가지고 있기 때문에 오늘날 프로그래밍 언어에 더 흔히 사용된다.2개의 단어 크기를 가진 일부 플랫폼에는 8진수로 표시되면 더 쉽게 이해할 수 있는 명령 하위 단어가 여전히 존재한다. 여기에는 PDP-11이 포함된다.근대의 유비쿼터스 x86 아키텍처도 이 범주에 속하지만, 이 플랫폼에서는 거의 8진법이 사용되지 않는다.

-아담

아직도 60년대 후반과 70년대 후반의 오래된 프로세스 제어 시스템(Honeywell H4400, H45000 등)이 산재해 있는데, 이 시스템은 8진수 어드레싱으로 24비트 단어를 사용하도록 배열되어 있다.마지막 원전이 언제 미국에서 건설되었는지 한 예로 생각해 보자.

이러한 산업 시스템을 교체하는 것은 꽤 중요한 일이기 때문에 여러분은 그들이 멸종하기 전에 야생에서 우연히 마주치게 될 운 좋게 그들의 웅장한 유동 지점 형식에 경외감을 느낄 수도 있다.

언어의 탄생으로 거슬러 올라가고 헤아릴 수 없는 수 많은 프로그램에 존재하는 표준을 수정해야 할 지적인 이유는 없다.나는 여전히 8진수 값에 의한 ASCII 문자를 기억한다. A의 16진수 값을 생각해내야 할 것이다. 그러나 그것은 8진수에서 101이고 숫자 0은 060이다...^C는 003...

즉, 나는 8진법을 자주 사용한다.

자, 만약 당신이 정말로 당신의 광산을 구부리고 싶다면, PDP-10의 단어 형식을 보아라...

tar files 정보를 8진수 정수 문자열로 저장

Commercial Aviation은 존경받는 Arinc 429 버스 표준에서 8진수 "labels"(기본적으로 메시지 유형 ID)를 사용한다.따라서 항전 애플리케이션 코드를 작성할 때 라벨 값을 8진수로 지정할 수 있다는 것은 좋은 일이다...

나는 또한 항공기 트랜스폰더에 사용되는 8진법을 본 적이 있다.모드-3a 트랜스폰더 코드는 모든 사람이 4개의 8진수로 처리하는 12비트 숫자다.위키피디아에 대한 정보가 조금 더 있다.일반적으로 컴퓨터와 관련이 없다는 것을 알지만 FAA도 컴퓨터를 사용한다.

이왕이면 쓸모가 있다.chmod그리고mkdir유닉스 랜드의 기능들, 하지만 그것 말고는 다른 일반적인 용도는 생각할 수 없다.

PDP-11을 통해 옥탈과 접촉하게 되었고, 보아하니 C언어는 :)

PDP-8에서 프로그램을 배운 사람은 누구나 8진수를 위한 따뜻한 마음을 가지고 있다.워드 크기는 12비트를 각각 3비트의 4개 그룹으로 나누어서 -1은 7777 옥탈이었다.이 계획은 16비트 단어의 PDP-11에서 계속되었지만 여전히 다양한 사물에 8진법을 사용했기 때문에 오늘날까지 존속하고 있는 *NIX 파일 허가제도에 영구히 적용되었다.

옥탈은 최초의 사용 가능한 디스플레이 하드웨어(7-세그먼트 디스플레이)와 함께 가장 유용하고 유용했다.이러한 원본 디스플레이에는 나중에 사용할 수 있는 디코더가 없었다.

따라서 디지털 레지스터 출력은 8개의 기호만 표시할 수 있는 사용 가능한 디스플레이에 맞게 그룹화되었다: 0,1,2 3,4,5,6,7.

또한 첫 번째 CRT 디스플레이 튜브는 래스터 스캔 디스플레이였고 가장 단순한 문자 기호 생성기는 7-세그먼트 디스플레이와 동일했다.

동기부여를 하는 운전자는 언제나처럼 가능한 한 가장 저렴한 디스플레이였다.

참조URL: https://stackoverflow.com/questions/44569/octal-number-literals-when-why-ever

반응형