본문 바로가기
알고리즘

진법 변환

by kcj3054 2021. 10. 23.
  • 2진법을 10진법으로 변환할때 10101 해당수를 뒤에서 부터 2^0 , 2^1 ..이런식으로 계산했었다.. 이런방식이 마음에 들지 않아서 찾아보았는데 앞에서부터 구현해도 가능했었다..

이진수

  • 주어진 이진수에서 하나의 숫자를 변환하면서 만들 수 있는 최대 십진수 값을 구하는 문제였다

  • 부르트포스방식이였고, 중간에 문자를 숫자로 변환 , 이진수를 십진수로 변환하는 과정만 겪으면 되는 거였다..

이진수 -> 10진수

  • ex : 11011010 이런식으로 있을때
str = 11011010
int num = 0;
for(int i = 0 ; i < str.size(); i++) {

    num = num * 2 + (str[i] - '0')

}    
  • 위의 방식대로 계산을 하면 곱하기2를 해주니 시프트연산의 느낌으로 가능하다 ,

1을 0으로 0을 1로

  • 보통 문자를 숫자로 변환할때 하나의 문자면 - '0'으로 해주지만 , 1 또는 0으로 변경을 해야하면 약간의 트릭을 넣어주면된다
    • str[i] = '1' + '0' - str[i]; -> str[i]가 1일 경우 0으로 변환되낟