sourcetip

자신의 보필은 현실적인 문제인가요, 아니면 역사적인 문제인가요?

fileupload 2023. 10. 20. 14:07
반응형

자신의 보필은 현실적인 문제인가요, 아니면 역사적인 문제인가요?

C에서 홀수/짝수를 결정하는 것에 대한 또 다른 질문이 있었고, 관용적인 (x & 1) 접근 방식은 C 표준이 허용하는 보완 기반 시스템에 대해 고장 난 것으로 올바르게 플래그가 지정되었습니다.

컴퓨터 박물관 밖의 '현실 세계'에 시스템이 정말로 존재합니까?저는 1970년대부터 코딩을 해왔는데 그런 짐승을 만난 적이 없다고 확신합니다.

실제로 그런 시스템을 위한 코드를 개발하거나 테스트하는 사람이 있습니까?아니면 그런 걱정을 할까요? 아니면 종이 테이프와 펀치 카드와 함께 101호실에 넣을까요?

저는 원격 측정 분야에서 일하고 있으며, 일부 고객들은 여전히 1의 보어를 사용하는 오래된 아날로그-디지털 변환기를 가지고 있습니다.얼마 전 보상을 위해 1의 보어에서 2의 보어로 변환하기 위해 코드를 작성해야 했습니다.

네, 아직도 밖에 있습니다. (하지만 자주 마주치지는 않을 것입니다.

이 모든 것은 당신의 뿌리를 아는 것으로 귀결됩니다.
네, 이 방법은 엄밀히 말하면 오래된 방법이므로 다른 사람들이 해당 질문에서 제안한 대로 수행하고 모듈로(%) 연산자를 사용하여 홀수 또는 짝수를 결정할 수 있습니다.그러나 1s 보어(또는 2s 보어)가 무엇인지를 이해하는 것은 항상 좋은 것입니다.사용 여부와 상관없이 CPU는 항상 이러한 문제를 처리합니다.그래서 그 개념을 이해하는 것은 결코 나쁠 수 없습니다.현대적인 시스템은 일반적으로 그런 것에 대해 걱정할 필요가 없기 때문에 어떻게 보면 프로그래밍 101 과정의 주제가 되었습니다.하지만 어떤 사람들은 아직도 현실 세계에서 이걸 사용할 거라는 걸 기억해야 해요예를 들어, 대중적인 믿음과는 반대로 여전히 조립을 사용하는 사람들이 있습니다!많지는 않지만 CPU가 Raw C#와 Java를 이해할 수 있을 때까지 누군가는 여전히 이 내용을 이해해야 할 것입니다.

그리고 실제로 이진 수학을 수행해야 하는 곳에서 어떤 일을 하고 있고 1s 보어가 도움이 될 수 있는 경우를 언제 발견할 수 있을지도 모릅니다.

제가 80년대에 사용했던 CDC Cyber 18은 1s 보완 기계였지만, 거의 30년 전이고, 그 이후로 한 번도 본 적이 없습니다. (그러나 그것이 제가 비PC에서 작업한 마지막이기도 합니다.)

RFC 791 p.14는 IP 헤더 체크섬을 다음과 같이 정의합니다.

체크섬 필드는 헤더에 있는 모든 16비트 워드의 보합을 16비트로 나눈 값입니다.체크섬을 계산하기 위해 체크섬 필드의 값은 0입니다.

따라서 사람의 보어는 전송되는 모든 IP 패킷에서 실제 세계에서 여전히 많이 사용됩니다.:)

찾기로 했습니다.Unisys ClearPath 시스템에는 ANSIC 컴파일러가 있습니다(예, "American National Standard C"라고 함). PDF 문서도 2013년에 마지막으로 업데이트되었습니다.이 문서는 온라인으로 이용할 수 있습니다.

서명된 유형은 모두 자신의 보표 표현을 사용하고 있으며, 다음 속성이 있습니다.

Type                 | Bits | Range
---------------------+------+-----------------
signed char          |   9  |  -2⁸+1 ...  2⁸-1
signed short         |  18  | -2¹⁷+1 ... 2¹⁷-1
signed int           |  36  | -2³⁵+1 ... 2³⁵-1
signed long int      |  36  | -2³⁵+1 ... 2³⁵-1
signed long long int |  72  | -2⁷¹+1 ... 2⁷¹-1

놀랍게도, 또한 기본적으로 부적합한 제품을 지원합니다.unsigned int그리고.unsigned long, 범위가 다양한0 ... 2³⁶ - 2, 로 변경할 수 있습니다.0 ... 2³⁶ - 1실용적으로

저는 한 번도 자신의 보완 시스템을 접해본 적이 없고, 당신만큼 코딩을 해왔습니다.

하지만 저는 HP-41c 계산기의 기계어인 9's 보체계를 접했습니다.나는 이것이 더 이상 쓸모없는 것으로 여겨질 수 있다는 것을 인정할 것이고, 나는 그들이 그것들을 위한 C 컴파일러를 가지고 있지 않다고 생각합니다.

우리는 지난 1960년대 허니박스를 작년 언젠가 출시했고, 그 덕분에 현장에서 가장 오래된 기계가 되었습니다.둘의 보약이었습니다.이것은 자신의 보완을 아는 것이나 인식하는 것이 나쁜 것이라는 것을 말하는 것이 아닙니다.단지, 오늘날 여러분은 컴퓨터 고고학이 아무리 일을 많이 한다고 해도 결코 보완 문제에 부딪히지 않을 것입니다.

정수 쪽에서 마주칠 가능성이 높은 문제는 엔디안 문제(PDP를 보고 있습니다)입니다.또한 정수 형식보다 부동 소수점 형식이 더 많은 "실세계"(즉, 오늘날) 문제에 직면하게 될 것입니다.

재미있는 것은, 사람들이 1993년comp.std.c에서 같은 질문을 했는데, 아무도 그 당시에 사용되었던 자신의 보완 기계를 지목할 수 없었다는 것입니다.

그렇기 때문에 자신의 보완은 우리 역사의 어두운 구석에 속하는 것이고, 사실상 죽은 것이며, 더 이상 걱정할 것이 아니라고 자신 있게 말할 수 있다고 생각합니다.

자신의 보필은 현실적인 문제인가요, 아니면 역사적인 문제인가요?

네, 아직도 사용하고 있습니다.현대 인텔 프로세서에서도 사용됩니다.Intel® 64 IA-32 Architectures Software Developer's Manual 2A, 3-8페이지:

3.1.1.8 설명 섹션

각 지침은 정보 섹션의 수에 따라 설명됩니다."설명" 섹션에서는 지침과 필요한 피연산자의 목적을 보다 자세히 설명합니다.

설명 섹션에서 사용할 수 있는 용어 요약:
* 레거시 SSE: SSE, SSE2, SSE3, SSE3, SSE4, AESNI, PCLMULQDQ 및 XMM 레지스터를 참조하고 VEX 접두사 없이 인코딩된 향후 명령어 집합을 참조합니다.
* VEX.vvvvv.소스 또는 대상 레지스터를 지정하는 VEX 비트 필드(1의 보양식).
* rm_field: ModR/Mr/m 필드와 임의의 REX.B의 축약어
* reg_field: ModR/Mreg 필드 및 임의의 REX.R의 축약어

언급URL : https://stackoverflow.com/questions/161797/is-ones-complement-a-real-world-issue-or-just-a-historical-one

반응형