[ java ] JavaFestival6 - Question1 - 2진수를 10진수로 바꾸는 프로그램을 작성하시오. 단, 부호…
작성일 20-12-19 01:58
페이지 정보
작성자 웹지기 조회 2,304회 댓글 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
댓글목록
등록된 댓글이 없습니다.