SyntaxHighlighter.all();

java를 이용하여 4bit 2진수를 입력받아 2의 보수로 변환해 주는 2의보수 변환프로그램입니다. 


원래는 다른 프로그램에서 사용하던 모듈화된 클래스파일이라 단순한 로직임에도 불구하고 복잡한 면이 있습니다. 


혹시 2진수를 2의 보수변환을 하시는 분은 conversionCom() 메소드만 가져다가 사용하시면 될 것 같습니다 ㅎㅎ


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package complement_4bit;
 
import java.util.Scanner;
 
public class Main {
 
    /* 2진수를 2의 보수로 변환 or 다시 양수로 변환 메소드 */
    private int[] conversionCom(int[] arr) {
        int[] arrComplement = new int[4];
        // 0->1, 1->0 으로 변환
        for (int i = 3; i >= 0; i--) {
            if (arr[i] == 0) {
                arrComplement[i] = 1;
            } else {
                arrComplement[i] = 0;
            }
        }
        // +1 을 해주는 과정
        arrComplement[3+= 1;
        for (int j = 3; j >= 0; j--) {
            if (arrComplement[j] == 2) {
                arrComplement[j] = 0;
                arrComplement[j - 1+= 1;
            }
        }
        return arrComplement;
    }
    
    /* 4비트 배열에 적절한 값이 들어오는지 검사 */
    private int inputCheck(int param) {
        if (param == -1)
            param = -1//  프로그램 종료
        
        if (param < -|| param > 1)
            param = -3// 값을 다시 입력받음
        
        return param;
    }
    
    /* 배열을 출력해준다 */
    private void arrPrint(int[] arr) {
        int size = arr.length;
        System.out.print("\t결과값     >> " );
        for (int i = 0; i < size; i++) {
            System.out.print(" "+ arr[i]);
        }
    }
 
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Main m = new Main();
        
        int register[] = new int[4];
        int nInput;
 
        boolean ctrtMenu = true;
        while (ctrtMenu) {
            System.out.println("\n\n\t─── 4bit 2의 보수 변환기 ──────");
            System.out.println("\t1. 2진수 입력");
            System.out.println("\t──────────────────────────");
            System.out.println("\t:: 첫 번째 자리가 1이면 보수로 판단.");
            System.out.println("\t:: 입력은 4bit 만 작동합니다.");
            System.out.println("\t:: 입력 단위는 스페이스또는 엔터입니다.");
            System.out.println("\t:: EX)1 0 0 1 , 0 0 0 1");
            System.out.println("\t:: 종료는 -1");
            System.out.println("\t──────────────────────────");
            System.out.print("\t2진수 입력 >> ");
        
            for (int i = 0; i < 4; i++) {
                nInput = m.inputCheck(input.nextInt());
                
                if (nInput == -1) {
                    System.out.println("\n\t프로그램을 종료합니다.");
                    System.exit(0);     
                }
                
                if (nInput == -3) {
                    i--;
                    System.out.println("\terror : 2진수를 입력해 주세요!");
                    System.out.print("\t2진수 입력 >> ");
                    continue;
                }
                register[i] = nInput; // 배열에 유효성검사를 한 수를 넣는다.
            }
            m.arrPrint(m.conversionCom(register)); // 출력
        }
    }
}
 
 
 
cs

18번 라인의 +1은 2의 보수이기 때문에 비트역전을 한 뒤, +1를 해주는 과정입니다. 


72~82번 라인까지는 1과 0 이외의 숫자가 입력됬을시를 처리하는 부분이며 종료명령인 -1를 인식하여 


프로그램을 종료합니다. 

반응형

'JAVA' 카테고리의 다른 글

[JAVA] java 기본 - 프로그램 종료하기  (0) 2018.09.16

java 에서 프로그램을 종료할 때에는 System.exit(0) 메소드를 사용해 주시면 됩니다.


1
2
3
4
5
6
7
8
9
10
package exit;
 
public class Exit {
 
    public static void main(String[] args) {
        System.out.println("\n\n\t프로그램을 종료합니다.");
        System.exit(0);
    }
}
 
cs

exit 명령어를 사용하면 아래와 같이 프로그램을 종료할 수 있습니다. 


반응형

'JAVA' 카테고리의 다른 글

[JAVA] 2진수를 입력받아 2의 보수로 변경하는 프로그램  (0) 2018.09.16

+ Recent posts