[ java ] JavaFestival6 - Question1 - 2진수를 10진수로 바꾸는 프로그램을 작성하시오. 단, 부호비트가 1인경우는 2의 보수로 표현 > java

본문 바로가기

사이트 내 전체검색

java

[ java ] JavaFestival6 - Question1 - 2진수를 10진수로 바꾸는 프로그램을 작성하시오. 단, 부호…

작성일 20-12-19 01:58

페이지 정보

작성자 웹지기 조회 1,813회 댓글 0건

본문

Question1

 - 2진수를 10진수로 바꾸는 프로그램을 작성하시오. 단, 부호비트가 1인경우는 2의 보수로 표현

 

import java.util.Scanner;


public class Question1 {

    public static void main(String[] args) {

        //2진수를 10진수로 바꾸는 프로그램을 작성하시오.

      //2진수 => 10진수 식 : 1001 = 2x4x1 + 2x3x0 + 2x2x0 + 2x1x1 => 10진수 9

        Scanner sc = new Scanner(System.in);


        System.out.print("2진수를 입력 하세요 : ");

        String str = sc.nextLine();

        String[] str2 = str.split(""); //문자를 잘라서 배열로 넣는다.

        

        int num = 1; //2의 배수를 곱해줄 숫자

        int tot = 0; //2의배수로 곲한 값을 더해줄 숫자

        int j=0;

        

        //배열의 첫번째 값이 1이면 음수가 된다.

        //부호비트가 1인경우 1의 보수를 구해서 1을 더하면 2의 보수가 된다.

        if(Integer.parseInt(str2[0]) == 1) {

            for(int i=(str2.length-1); i>=0; i--) {

                if(Integer.parseInt(str2[i]) == 1) {

                    j=0;

                } else {

                    j=1;

                }

                if(i==1) { //부호비트로 2의 보수 및 음수 변경구간

                    tot +=1;

                    tot*=-1;

                    break;

                }

                tot += (num*j);

                num*=2;

            }

        } else {

            for(int i=(str2.length-1); i>=0; i--) {

                j = Integer.parseInt(str2[i]);

                tot += (num*j);

                num*=2;

            }

        }

        System.out.println(str+"(2) = "+tot+"(10)");

    }

}

 

결과

2진수를 입력 하세요 : 01001101

01001101(2) = 77(10)

 

2진수를 입력 하세요 : 00101000

00101000(2) = 40(10)

 

2진수를 입력 하세요 : 11001011

11001011(2) = -53(10)

 

 


추천0

비추천 0

댓글목록

등록된 댓글이 없습니다.

전체 113건 3 페이지

이미지 목록

게시물 검색
Copyright © 즐거운 코딩 생활 ( funyphp ). All rights reserved.
PC 버전으로 보기