[A+]중앙대 마이크로프로세서응용회로설계실습 과제 FND (6주차)
- 최초 등록일
- 2021.10.09
- 최종 저작일
- 2021.04
- 6페이지/ MS 워드
- 가격 1,000원
목차
1. fnd_hexa_number()의 비트연산이 어떤 역할을 하는가?
2. logic()에서, 입력받은 값에서 ‘0’을 빼는 이유는 무엇인가?
3. [ $ argc_argv ]를 입력하면 어떻게 되겠는가?
4. [ $ argc_argv 1234 o ]를 입력하면 어떻게 되겠는가?
5. [ $ argc_argv b 10101111]를 입력하면 어떻게 되겠는가?
본문내용
a. fnd_hexa_number()의 비트연산이 어떤 역할을 하는가?
fnd_hexa_number()의 비트 연산인 number & 0xF는 number의 숫자를 2진수 00001111과 and 연산 해서 number의 2진수 형태에서 뒤의 4자리만을 결과로 가진다. FND를 통해 표현할 수 있는 숫자, 문자는 16가지이기 때문에 16가지를 표현하는 이진수 4자리에 대한 정보만 추출한다. 비트 연산 이후 shift 연산을 통해 비트 연산 한 앞의 4개 비트를 다시 뒷자리로 보내서 다른 FND에 대한 값을 얻을 수 있다. 예를 들어서 0x37 & 0xF 연산을 하면 결과는 0x7이 나온다.
b. logic()에서, 입력받은 값에서 ‘0’을 빼는 이유는 무엇인가?
argv[]에 입력 받은 값은 문자열 이기 때문에 정상적인 숫자 연산이 불가능하다. 연산을 하면 문자는 ASCII code에 맞는 십진수로 바뀐다. 문자 ‘0’은 ASCII 48, 문자 ‘1’은 ASCII 49, ‘2’는 50 이런 방식으로 문자 형태의 숫자는 실제 값보다 48, 즉 문자 ‘0’에 해당하는 크기가 더해진다. 그래서 문자 형태인 숫자를 그 값의 십진수로 사용하기 위해서 차이를 빼서 사용한다.
c. [ $ argc_argv ]를 입력하면 어떻게 되겠는가?
명령형 인자가 1개이기 때문에 LED와 FND가 모두 점등된다. FND는 점까지 모두 점등해서 ‘8.8.8.8.8.8.8.8.’ 꼴로 나타난다. 명령형 인자의 개수가 1이기 때문에 DOT matrix에는 1의 숫자가 나타난다.
참고 자료
없음