1.5 KiB
1.5 KiB
deck:: Logseq/coding tip
-
◼︎ 진수변환 알고리즘
- ◉ B진수 숫자 N을 10진수로 바꾸기(누적곱)
- id:: 8273b9c3-1ff0-4a1e-bc35-5d8b7b641f52
- 최종 변환 결과 result를 {{c1 0}} 으로 초기화
- B진수 숫자 N의 {{c1 가장 왼쪽자리}}부터 한자리씩 순회하면서 진행 ⓐ 순회하며 읽은 값을 {{c1 10진수}}로 바꿈(10 이상의 수는 A=10, B=11 등등), 이 값을 val로 지정 ⓑ result = {{c1 result*B + val}}
- 모든 자리수에 대해 수행하고 나면 최종적으로 result에 10진수로 변환된 숫자가 나옴.
- id:: 8273b9c3-1ff0-4a1e-bc35-5d8b7b641f52
- ◉ 10진수 숫자 N을 B진수로 바꾸기(나머지 계산법)
-
id:: d4f39d33-3537-4a10-8845-d88e7c1d4fd6
- 최종 변환 결과 result를 배열로 초기화
- N이 0이 될 때까지 반복문을 돌림(반복되는 내용을 코드로 작성할 것)
- 생성된 result를 뒤집어서 순서대로 읽으면 그것이 최종적으로 B진수로 변환된 숫자.
위의 적어준 로직을 바탕으로 10진수 숫자 N을 B진수로 바꾸는 코드를 작성하라 #card
-
result = [] while N != 0 : val = N & B # 11진수 이상일 경우에는 val을 그 진수에 맞는 형태로 바꿔서 넣어야 함 # 예를들면 16진수의 경우 val이 10이면 A, 11이면 B 등등 result.push(val) N //= B print("".join(result.reversed()))
-
- ◉ B진수 숫자 N을 10진수로 바꾸기(누적곱)