아요 개발 일기

[구름LEVEL] Level1. 16진수 Feat. 진수 변환 본문

Algorithms/문제 풀이

[구름LEVEL] Level1. 16진수 Feat. 진수 변환

소진이 2023. 1. 16. 10:35

안녕하세용 *ㅇ*
이제 알고리즘을 하루에 하나씩은 꼭 풀고 풀이도 적어 놓을라구요….!! (너무 늦은 것 같기도ㅜ)
후회하는 시간도 아까우니! 화이팅!


문제

 

내 풀이

 

간단하게 진수들에대해 알아보겠습니다.
10진수, 2진수 ,8진수, 16진수 다들 많이 접해보셨죠?
진수 앞에 숫자는 각자 기수로 가지고 있는 수를 뜻합니다!

10진수에서 진수 변환을 할때는 그냥 해당 기수로 나누어서 나머지 값만 추합하면 됩니다!

그럼 % 연산을 사용할 수도 있겠지만! 

저희에게는 더 간편한 radix 연산자가 있습니다. 그저 뒤에 변환하고 싶은 진수의 기수를 적으면 돼요!!

 

그럼 10진수가 아니라 다른 진수에서 변환할 때는 어떻게해야할까요?

다른 유형들도 한번에 다 보여드릴게요!!!

 

10진수 -> 2진수

let decimal: Int = 30
let binary: String = String(decimal, radix: 2)
print(binary)
/* 11110 */

 

2진수 -> 10진수

let binary: String = "11011"
let decimal: Int = Int(binary, radix: 2)!
print(decimal)
/* 27 */

 

10진수 -> 8진수

let decimal: Int = 924
let octal: String = String(decimal, radix: 8)
print(octal)
/* 1634 */

 

 

10진수 -> 16진수

let decimal: Int = 142
let hexadecimal: String = String(decimal, radix: 16)
print(hexadecimal)
/* 8e */

 

16진수 -> 10진수

let hexadecimal: String = "ab"
let decimal: Int = Int(hexadecimal, radix: 16)!
print(decimal)
/* 171 */

 

2진수 -> 16진수

let binary: String = "11111101"
let hexadecimal: String = String(Int(binary, radix: 2)!, radix: 16)
print(hexadecimal)
/* fd */

 

16진수 -> 2진수

let hexadecimal: String = "feed"
let binary: String = String(Int(hexadecimal, radix: 16)!, radix: 2)
print(binary)
/* 1111111011101101 */

 

 

어때요 엄청 편리하죠!!

잘 사용될 것 같아요ㅎㅎㅎㅎ 

 

혹시 틀린 부분있거나 더 좋은 풀이가 있다면 말씀해주세요!