나는 여기에 질문/답변의 몇 가지를 통해 읽어 봤는데 :Two 's Complement의 정의?
def twos_comp(val, bits):
"""compute the 2's compliment of int value val"""
if((val&(1<<(bits-1))) != 0):
val = val - (1<<bits)
return val
:
is-twos-complement-notation-of-a-positive-number-the-same-number
사람은 숫자의 2의 보수를 만들 수있는 몇 가지 예제 코드를했다
또한 누군가가 2의 보수를 다음과 같이 정의했습니다.
2의 보수 표기법은 n 비트 2의 보수를 사용하여 부호를 뒤집습니다. 8 비트 숫자의 경우 2^8에서 숫자를 뺀 값이 음수 인 입니다.
이러한 선언은 변경되지 않았습니다. 그러나, 2의 보완의 나의 이해와 함께 그 chides가있다. 이진수를 반전하고 1을 더함으로써 계산 된 것으로 생각했습니다. (숫자 표현에 제한된 수의 비트가 있다는 이해와 함께)
또한 2의 보수에는 additive inverse이라는 특성이 있어야합니다. 원래 번호. 하지만, twos_comp의 출력에는 그 것으로 나타나지 않습니다. 내 정의에서 내 손 계산 (그리고 내가 쓴 몇 가지 테스트 코드)에서 숫자와 그 두 개의 보수가 함께 더 해지면 1이 오버플로되고 나머지 비트는 0이므로 이것이 첨가물을 갖는다는 것을 알 수있다. inverse 속성.
2가 보완에 대한 정의가 여러 개인가요? 혼란 스럽습니까? 아니면 다른 게시물의 정의와 기능이 잘못 되었습니까?
는 [유튜브]에 몇 가지 괜찮은 물건이있다 (http://www.youtube.com/watch?v=9W67I2zzAfo)는 – JMK