[코드트리] 10진수로 변환하기

정민교·2024년 2월 7일
0

자료구조&알고리즘

목록 보기
2/10

[코드트리] 10진수로 변환하기

보통 2진수를 10진수로 변환할 때는 뒤에서부터 앞에서 계산하는 방식을 주로 사용한다.

2진수의 각 자리가 2의 거듭제곱을 의미하기 때문이다.

그래서 보통은 11101의 2진수를 10진수로 변환할 때 각 자리를 해당하는 2의 거듭제곱(2^0, 2^1, 2^2, 2^3, 2^4)으로 곱한 후 더해서 구한다.

이 방법 외에도 더블-더블이라는 방법도 있다.

이 방법은 앞에서부터 시작하여 두 배씩 값을 증가시킨 후 해당하는 2진수 자리를 더하여 2진수를 10진수로 변환하는 방법이다.

그리고 첫 시작 값은 무조건 0으로 시작한다.

예를 들면,

11101 2진수를 더블-더블 방법으로 계산하면

((0 X 2) + 1) X 2 + 1) X 2 + 1 ... 이런식으로 계산하여 구하는 방식이다.

이 방법으로 구하면 비교적 간단한 코드로 2진수를 10진수로 변환할 수 있다.

import java.io.*;
import java.util.*;
import java.util.stream.*;
import java.util.concurrent.atomic.AtomicInteger;

public class Main {
    public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    public static List<Integer> binary = new ArrayList<>();
    public static void main(String[] args) throws IOException {
        binary = Arrays.stream(br.readLine().trim().split("")).map(Integer::parseInt).collect(Collectors.toCollection(ArrayList::new));
        AtomicInteger answer = new AtomicInteger(0);
        IntStream.range(0, binary.size()).forEach(index -> {
            answer.set(answer.get() * 2 + binary.get(index));
        });
        System.out.println(answer.get());
        br.close();
    }
}
profile
백엔드 개발자

0개의 댓글