티스토리 뷰
이 글은 제가 보수에 대해 공부하면서 배운거를 제가 알아듣기 쉽게 적은 글입니다.
책보고 한게 아니라 틀릴수도 있습니다.
2진법에서 1의 보수는 자릿수가 모두 1인수에서 주어진 2진수를 빼면됨
1111(2)-0101(2) = 1010(2) 0101의 1의 보수 1010
2의 보수는 1의보수 +1 이다 1010 + 0001 -> 1011(2)
헷갈리던거
2진수 음수의 값을 어떻게 알아낼까? 답은 1의보수를 취한후 1을 더하면 나온 값의 절댓값이 구하고자하는 음수의 절댓값이다.
1101(2) <- 값은 몰라도 일단음수
이거의 절댓값을 구하려면
1101(2) ->(1의 보수) 0010(2) ->(1더하기) 0011(2) 즉 3 이였다.
그렇다면 2진수도 수학이기 때문에 1101(2) 과 (2진수3)0011(2) 을 더하면 0이 나와야 될꺼다.
더하면 10000(2) 이 나온다 이경우 자리수를 넘긴 끝에 1을 없애야 한다. 그럼 0 이 나온다.
수학적으로 절댓값이 같은 두 양음수를 더하면 0이 나와야 되는데 진짜 나왔다.
2진수의 뺄샘방법
2의 보수를 취하는 방법과
1의 보수를 취하는 방법이 있다.
1의 보수는 일단 빼는 숫자에 1의 보수를 취한후 자릿수가 올라갔다면(답이 양수가 나온경우 자연스럽게 이렇게 됨) 올라간거 없애고 값에 1을 더하면 끝 , 자릿수가 올라가지 않은경우(답이 음수) 나온 값에 1의 보수를 다시 취하고 -를 붙이면 답이다.
(7)111(2) - (6)110(2) = 111 + 001 = 1000(2) 이렇게 자릿수가 하나 올라간 경우에는 올라간 1은 없에고 나온 2진수값에 1일 더하면 된다 1000-> 000 -> 001(2) 즉 10진수로 바꾸면 1인 값이 나온다 7 - 6 의 값이 나왔다. 옳다
(4)100(2) - (6)110(2) = 100 + 001 = 101(2) 101-> 010 -010(2) == -2(10) 4 - 6 = -2
2의보수를 이용하면 뺄 값에 2의 보수를 취한후 자리 올림이 생긴 경우 자리올린 값을 제외한 부분이 결과이고
올림 값이 없으면 나온 값에 다시 2의 보수를 취해주고 - 를 붙이면 된다.
2의 보수
111(2) - 110(2) = 111 + 010 = 1001(2) -> 001(2) == 1
100(2) - 110(2) = 100 + 010 -> 110 -> 010 -> -010(2) == -2
'프로그래밍' 카테고리의 다른 글
heroku 에 flask앱 배포하기 (0) | 2021.05.23 |
---|---|
자바스크립트를 이용해 가장간단하게 전체체크구현 (0) | 2020.12.12 |
css class 띄어쓰기의 의미 (0) | 2020.11.14 |
- Total
- Today
- Yesterday
- SW교육프로그램
- border-box
- 자기개발
- 자식선택자
- 전역후후유증
- error: src refspec master does not match any.
- 조코딩
- 타이탄 철물점과 브랜드로우 워드프레스 1기 후기
- 컨트롤F5
- 타이탄 철물점
- 체크인미팅1차실패
- CSS
- 뺄샘
- 티스토리챌린지
- 브랜드로우
- 문법
- SW정글
- 42seoul
- >선택자
- 그때그때열심히
- 역행자
- SW마에스트로
- 파이썬
- 오블완
- 42서울
- 이것이 취업을 위한 코딩테스트다
- 파이썬문법
- 체크인미팅3차성공
- 자의식 해체
- 기본문법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |