0은 1의 보수에 2 개의 값을 어떻게 가지나요?


12

2의 보수에서 0은 단 하나의 값을 갖는 반면, 1의 보수에서는 +0과 -0 모두 별도의 값을 갖는다 고합니다. 그들은 무엇인가?


8
0에는 두 개의 값이 없습니다. 값은 0입니다. Period. 그것은 무엇 않습니다 1의 보수에이 두 가지입니다 표현 . 그러나 그것은 정말로 독특한 것이 아닙니다. 예를 들어, 숫자 10은 10, +10, 010, +010, 0010, +0010 등의 10 진수로 무한히 많은 표현을 갖습니다.
Jörg W Mittag

바로 그거죠. 값은 전용 등가 클래스 진술, 그리고 무엇을 "값을 0"이라고하는 것은 모두 포함하는 등가 클래스 될 일이 000...0111...1. 그러나이 두 표현은 여전히 ​​단일 값만 구성합니다.
leftaroundabout

답변:


19

1의 보수 에서는 모든 비트를 반전시킵니다.

다음 두 가지 예를 고려하십시오 (8 비트 가정).

  • 4 = 111110114=00000100 이므로4=11111011

  • 0 = 111111110=00000000 이므로 입니다.0=11111111

숫자 0을 나타내는 2 가지 방법이 있습니다

에서 2의 보수 당신은 부정적인 번호의 1의 보수 표현에 1을 추가

  • 11111011 1111110041의 보수 값이 는 이1111101111111100
  • 11111111 000000000 1의 보수 있다는 된다 같은 0으로1111111100000000

따라서이 경우 0을 나타내는 한 가지 방법이 있습니다.

예제에서 볼 수 있듯이 차이점은 다음과 같습니다.

  • 1의 보수로, 8 비트로 에서 까지 숫자를 표현할 수 있습니다 (-127에서 127까지)2 7 - 127+1271
  • 8 비트가있는 2의 보수에서 ~ (-128 ~ 127)의 숫자를 표현할 수 있으므로 하나 이상의 숫자 2 7127271

7
그것은 언급 할 가치가있을 수도 있음을 당신은 그들이 무엇인지 자세히하지 않는 경우에도, 2의 보수가의 범위에 옆에 또 하나의 수를 더 이점이있다.
KRyan

7
이 주석 섹션에서 언급 한 장점 중 하나를 언급 할 수도 있습니다. 주요 장점 중 하나는 빼기 (/ 음수의 추가)가 숫자가 부호없는 척하고 추가하여 구현할 수 있다는 것입니다. 빼기에는 특별한 경우가 필요하지 않습니다. 훨씬 간단한 회로와 논리입니다. 이 페이지 에는 해당 주제에 대한 훌륭한 글이 있습니다.
Jason C

3

1의 보수에서는 모든 비트를 뒤집어서 숫자를 부정합니다. 따라서 0, 부정 하면 되며 이는 과 동일합니다.1 1 000110


엔드 어라운드 캐리로 덧셈 또는 뺄셈 작업을 보완합니다. 물론 프로그래머에게 표시되는 내용이 기본 표현 일 필요는 없습니다.
ttw

1
@ttw이 질문은 0의 두 표현이 무엇인지 묻기 때문에 덧셈, 뺄셈 및 프로그래머가 어디에 있는지 확실하지 않습니다.
David Richerby

3

보수에서 서로 다른 두 개의 0 을 말하는 것은 오해의 소지가 있습니다. 1의 보수 (및 2의 보수)는 숫자의 이진 표현 입니다. 이진수로 숫자를 나타내는 방법과 그에 대한 산술 연산을 수행하는 방법을 설명합니다. 비트 시퀀스로 표시되는 숫자가 값입니다.

보수에 값이 있고 부호를 뒤집어 값의 표현을 찾으려면-첨가제 역수-모든 비트를 뒤집습니다. 여기에는 0이 포함되므로 에 대한 표현과 대한 표현이 있습니다. 그러나 :의 부호를 반전 당신에게 다른 값을 제공하지 않습니다, 그것은 당신에게 같은 값을 제공합니다.0 0 = 0 0000=00

이것은 1의 보수에서 에 대한 두 가지 표현, 즉 비트 시퀀스 과 비트 시퀀스 합니다.0 0 1 100011

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.