알고리즘
진법 변환
kcj3054
2021. 10. 23. 03:52
- 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으로 변환되낟