10진수의 숫자를 한개 받고...
더할 것인지 뺄 것인지 입력받고...
10진수 숫자를 한개 받고...
프로그램 안에서.... 10진수를 2진수로 바꾸고....
더하던가 빼던가 해서...
나온 값을 다시 10진수로 변환하여...답을 내준다...
라는 프로그램입니다...ㅅㅅ;;;
부호화도 해줘야 되는데요....전공이 컴터프로그램이 아니라서...
무슨 소린지 잘 모르겠습니다..ㅠㅠ
원리는 아래와 같습니다...
두 2진수 X = 1010100 과 Y = 1000011 이 주어졌을 때 2의 보수를 사용하여 X-Y 와 Y-X 를 구하면
X = 1010100
Y 에 대한 2의 보수 = + 0111101
합 = 10010001
끝자리올림 2^7 을 버림 = - 10000000
답 : X-Y = 0010001
Y = 1000011
X 에 대한 2의 보수 = + 0101100
합 = 1101111
끝자리올림 없음
답 : Y-X = - (1101111에 대한 2의 보수)
= -0010001
이렇게 되는 원리 인데요....ㅅㅅ;;;
import java.io.*;
public class 1234 { public static void main (String [] args) throws Exception { BufferedReader inputName; inputName = new BufferedReader(new InputStreamReader(System.in)); String filename = inputName.readLine(); int one[8]={0}; int two[8]={0}; int sum[8] ={0}; int bosu1[8] ={0}; int bosu2[8] = {0};
int i,j,input1,input3,result; char input2; result=0; System.out.print("첫번째 정수 입력하시오 : "); System.out.printf("%d",&input1); System.out.print("+나 -를 입력하시오 : "); System.out.printf("%s",&input2); System.out.print("두번째 정수를 입력하시오 : "); System.out.printf("%d",&input3);
for(i=0; i<8; i++) { if(input1 / 2 !=0) { one[i] = input1 % 2; input1 = input1 /2; } else { one[i] = input1 % 2; break; } }
for(i=0; i<8; i++) { if(input3 / 2 !=0) { two[i] = input3 % 2; input3 = input3 /2; } else { two[i] = input3 % 2; break; } } System.out.print("첫번째 정수에 대한 이진수 : "); for(i=7; i>=0; i--) { System.out.print("%d",one[i]); } System.out.print("\n두번재 정수에 대한 이진수 : "); for(i=7; i>=0; i--) { System.out.print("%d",two[i]); } for(i=0; i<8; i++) { if(one[i] == 0) { bosu1[i] = 1; }
else { bosu1[i] = 0; } bosu1[0] = bosu1[0] + 1; for(i=0; i<8; i++) { if(bosu1[i] == 2) { bosu1[i] = 0; bosu1[i+1] = bosu1[i+1] +1; } }
for(i=0; i<8; i++) { if(two[i] == 0) { bosu2[i] = 1; } else { bosu2[i] = 0; } } bosu2[0] = bosu2[0] + 1; for(i=0; i<8; i++) { if(bosu2[i] == 2) { bosu2[i] =0; bosu2[i+1] = bosu2[i+1] +1; } }
System.out.print("\n첫번째 정수에대한 보수 : "); for(i=7; i>=0; i--) { System.out.print("%d",bosu1[i]); } System.out.print("\n두번째 정수에 대한 보수 : "); for(! i=7; i>=0; i--) { System.out.print("%d",bosu2[i]); } System.out.print("\n"); while(1) { switch(input2) { case '+' : for(i=0; i<8; i++) { sum[i] = one[i] + two[i]; if(sum[i] == 2) { sum[i] = 0; one[i+1] = one[i+1] +1;
} if(sum[i] == 3) { sum[i] = 1; one[i+1] = one[i+1] +1; }
} System.out.print("덧셈 결과는: "); for(i=7; i>=0; i--) { System.out.print("%d",sum[i]); } System.out.print("\n이것을 다시 10진수로 바꾸면 : "); j = 1; for(i=0; i<8; i++) { result = result + (sum[i] * j); j = j * 2; } System.out.printf("%d\n",result); input2 = 1; break;
case '-' : for(i=0; i<8; i++) { sum[i] = one[i] + bosu2[i]; if(sum[i] == 2) { sum[i] = 0; one[i+1] = one[i+1] +1; } if(sum[i] == 3) { sum[i] = 1; one[i+1] = one[i+1] +1; } } System.out.print("뺄셈 결과는: "); for(i=6; i>=0; i--) { System.out.printf("%d",sum[i]); } System.out.print("\n이것을 다시 10진수로 바꾸면 : "); j = 1; for(i=0; i<8; i++) { result = result + (sum[i] * j); j = j * 2; } System.out.printf("%d\n",result); input2 = 1; break; default : exit(1); break; } }
왜 자꾸 에러가...ㅡㅡ;;; |
첫댓글 10 진수를 2진수 문자로 반환해주는게 있을꺼에요...