Cooper's devlog

[TIL] 2021.01.04 본문

TIL

[TIL] 2021.01.04

cooper_dev 2021. 1. 4. 23:50

[마스터즈 코스 1일차 - Day1(CS10)]

 

 마스터즈 코스가 시작됐다. 5주간 10개의 CS 미션을 진행할 예정이다. 오늘은 반가산기와 전가산기의 작동원리를 이용해서 이진법 연산과 Convertor를 구현해 10진수를 2진수로, 2진수를 10진수로 변환하는 로직을 만들었다. 반가산기의 경우 두 개의 값을 입력하면 sumcarry(자리올림수)를 반환한다. 그리고 두 개의 반가산기를 이용해서 전가산기를 만들면 두 값을 대입했을 때, 두 값의 연산결과를 출력할 수 있었다. 참 어렵고 맘에 안드는데 자꾸 손이 가는 매력이 있다😂

 

[전가산기 로직]

1. a와 b의 합 연산을 다른 반가산기에 전달한다.

2. 합 연산과 자리올림 수을 입력 값으로 도출된 carry 값과 

3. a와 b의 carry 값을 이용해서

OR연산자를 통해 자리올림 비트를 출력한다.

4. 그리고 자리올림 수와 합 연산 값을 통해 합 비트 출력을 한다.

 

 하지만 아직 전가산기에 대한 내용을 학습했지만 직접 손으로 작성해보려고 하니 혼돈의 카오스였다. 다행히 표를 이용해서 전가산기 로직을 구현했지만 뭔가 계속 찝찝함이 남아있다.

 

그래도 다같이 코드리뷰를 하며 서로의 부족한 점을 보완할 수 있었다. 10진법에서 2진법을 변경 시, 2진법 수 1인 경우만 숫자를 더하는 조건을 처리하는데 로직이 중복 처리가 되어있었다. 다같이 내 코드를 보면서 부족한 점과 잘한 점에 대해서 피드백을 받았다는 점이 좋았다. 첫 날이었지만 이튿날 본 사람처럼 코드리뷰가 진행되서 편하게 코드리뷰를 할 수 있었다.

 

 내일은 16진수를 2진수 변환, 2진수를 16진수로 변환하는 방법에 대해 고민해보고 다른 크기의 이진수를 boolean 값을 처리하는 방법을 고민해보려고 한다. 그리고 코드 리뷰에서 공유됐던 JUnit으로 테스트 코드를 이용해서 작성해봐야겠다. 계속해서 숫자를 변경하면서 결과값을 확인하는 내 자신을 보면서 다시 한번 테스트코드의 소중함을 깨닫게 되었다. TDD는 현재 계속해서 중요성이 강조되고 있으니 습관처럼 사용할 수 있도록 노력해야겠다.

 


Done

- 반계산기, 전계산기 구현- 10진법 ↔ 2진법 구현

 

Good

- 첫날부터 코드리뷰를 진행했음.

 

Bad

- 전계산기 작동원리가 완벽히 이해가 되지 않아 찜찜함.

 

TODO

- 16진수 ↔ 2진수 변환 방법 찾아보기

- JUnit 사용해서 코드 작성하기

- 다른 크기 이진수 값 연산 처리해보기

'TIL' 카테고리의 다른 글

[TIL]2021.01.11  (0) 2021.01.12
[TIL] 2020.01.08  (0) 2021.01.09
[TIL] 2020.01.07  (0) 2021.01.08
[TIL] 2021.01.06  (0) 2021.01.06
[TIL] 2021.01.05  (0) 2021.01.05
Comments