> 일반적인 문제 > 기계번호는 원본코드인가요, 보완코드인가요?

기계번호는 원본코드인가요, 보완코드인가요?

青灯夜游
풀어 주다: 2022-11-18 14:22:46
원래의
16792명이 탐색했습니다.

기계번호는 원본코드이자 보완코드입니다. 컴퓨터에 표시되는 부호 있는 이진수를 기계 번호라고 합니다. 기계 번호에는 원본 코드, 1의 보수, 보수의 세 가지 표현이 포함됩니다. 원래 코드는 부호 비트가 추가된 이진수입니다. 양수의 부호 비트는 0이고 음수의 부호 비트는 1이며 부호 비트는 양수의 보수입니다. 원래 코드이고 음수의 보수는 부호 비트이고 다른 비트는 반전됩니다. 양수의 보수는 원래 코드이고 음수의 보수는 +입니다. 1.

기계번호는 원본코드인가요, 보완코드인가요?

이 튜토리얼의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.

1. 기계번호


기계번호를 파악한 결과, 기계번호에 '소스코드', '역코드', '보완코드'라는 표현이 포함되어 있는 것을 발견했습니다. 숫자를 나타냅니다. 컴퓨터에서 이진 표현 형식으로 기계 번호의 첫 번째 비트는 부호 비트입니다. 양수의 부호 비트는 "0"이고 음수의 부호 비트는 "1"입니다.

예: 5의 기계 번호는: 00000101

- -5의 기계 번호는: 10000101(8비트 바이너리를 예로 들어)

그리고 "소스 코드", "역 코드" 및 "보완" 코드"는 동일한 표현 형식을 가지므로 이들의 관계는 다음에 자세히 소개됩니다.

2.참값


참값은 부호비트가 있는 기계번호에 해당하는 실제값을 말합니다.

참값은 일반적으로 10진수 표기법으로 표현되지만, 다른 진수로 표현되는 경우는 거의 없습니다.

예: 10000101의 참값 = -0000101 = -5

00000101의 참값 = +0000101 =+5

3 원본 코드는

기호가 있는 이진수입니다. 비트 추가, 양수 숫자의 부호 비트는 0이고 음수의 부호 비트는 1이며 부호 비트가 가장 높은 비트입니다. 내 개인적인 이해는 실제 값의 "+"를 0으로, "-"를 1로 변환하는 것입니다.

원본 코드의 표현은 첫 번째 비트가 부호 비트에 참값의 절대값을 더한 값이라는 것입니다.

예: -000101(참값) = 10000101(원본 코드)

        00000101(참값) = 00000101(원본 코드)

첫 번째 비트가 부호 비트이므로 8- 비트 바이너리는

11111111~01111111 즉 -127~127입니다.

원본 코드는 뇌가 가장 이해하고 계산하기 쉬운 표현입니다.

4. 양수의 보수는 그 자체입니다. 음수의 보수는 부호 비트가 그대로 유지되고 다른 비트는 그대로 유지됩니다. 반전됩니다(0은 1이 되고, 1은 0이 됩니다). 음수의 1의 보수 코드는 부호 비트를 그대로 유지하고 나머지 비트는 반전됩니다.

역코드는 원래 코드를 기준으로 합니다. 양수이면 원래 코드와 동일합니다. 음수이면 첫 번째 기호는 변경되지 않고 나머지 값은 반전됩니다.

예: 00000101(원본코드) = 00000101(역코드)

10000101(원본코드) = 11111010(역코드)

역코드는 뇌가 이해하기 쉽지 않으며, 대개 원본으로 변환됩니다. 코드를 입력한 후 계산합니다.

5. 보완 코드

보완 코드는 원래 코드를 기준으로 합니다. 양수이면 첫 번째 기호를 제외하고 음수이면 원래 코드와 동일합니다. 이를 기준으로 값이 반전됩니다(역코드).

예: 00000101(원본코드) = 00000101(역코드) = 00000101(보완코드)

10000101(원본코드) = 11111010(역코드) = 10000011(보완코드)

For Ne 음수, 2의 보수 표현 또한 인간의 두뇌가 그 값을 직관적으로 볼 수 없는 경우 일반적으로 원래 코드로 변환한 다음 그 값을 계산해야 합니다.

6. 원본 코드, 역코드, 보수 코드를 사용하는 과정

원본 코드만 사용하면 이해하기 쉽지만, 컴퓨터가 양수와 음수의 첫 번째 비트를 구별하려면 리소스를 많이 소모합니다. , 그래서 사람들은 작업과 관련된 기호 비트의 사용을 발견했습니다.


알고리즘에 따르면 양수를 빼는 것은 음수를 더하는 것과 같습니다. 즉, 1-1 = 1 + (-1) = 0이므로 기계는 더하기만 할 수 있고 빼기는 할 수 없습니다. 컴퓨터 작업의 디자인은 더 간단합니다.

탐색 계획 1.0(원본 코드):

1+ (-1) = 0

00000001(원본 코드) + 10000001(원본 코드) = 10000010(원본 코드) = -2

원본 코드 계산 계획 탐색 실패

추가 투자!

탐험계획 버전 2.0 출시(역코드):

00000001(원본코드) + 10000001(원본코드) = 00000001(역코드) + 11111110(역코드) = 11111111(역코드) = 10000000(원본) 코드) = -0

업데이트 설명: 연산에 참여하는 첫 번째 기호 문제를 해결하여 이진 연산을 위해 컴퓨터에서 소비하는 리소스를 크게 줄였습니다. 그러나 "0"과 "-0"이 반복되는 상황이 있습니다. , 이는 개선될 수 있습니다!

Exploration Plan 3.0 버전 출시(보조코드):

00000001(원본코드) + 10000001(원본코드) = 00000001(역코드) + 11111110(역코드) = 00000001(보완코드) + 11111111 (보조코드) = 00000000(보완 코드) = 00000000(원래 코드) = 0

첨부: (-1) + (-127) = (-128)

10000001(원래 코드) + 11111111(원래 코드) = 11111110(역코드) ) +10000000(1의 보수) = 11111111(1의 보수) +10000001(1의 보수) = 10000000(1의 보수) = -128

업데이트 설명: 버전 2.0에 존재했던 의미 없는 바이너리 "-0"을 바이너리에 대해 해결했습니다. 범위는 버전 1.0(-127~127)에서 (-128~127)로 더욱 확장되었습니다. 다른 비트 바이너리에도 동일한 원리를 사용할 수 있습니다. 예를 들어 int는 4바이트와 32비트를 가지며 표현되는 범위는 다음과 같습니다. (- 2^31~2^31-1)

버전 3.0은 환경 보호 개념에 더 부합하므로 컴퓨터 저장 바이너리에 가장 적합한 선택입니다.

더 많은 관련 지식은

FAQ

칼럼을 방문해주세요!

위 내용은 기계번호는 원본코드인가요, 보완코드인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿