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

현재 블록체인을 이용한 다양한 암호화폐들이 존재합니다.


그중 일렉트로니움은 익명성이 강한 모네로를 모체로 하는 블록체인입니다.


사실 모네로도 대쉬와 동일하게 익명성이 짙은 cryptonote 를 기반으로 만들어졌는데, 자세한 내용은 다음에 포스팅해보도록 하겠습니다.


일렉트로니움의 주요 특징


1. 추적이 불가능한 트랜잭션


2. 연결되지 않는 트랜잭션 


3. 분석 방지


4. 평등한 작업증명


5. 모바일 채굴 및 빠른 속도


모바일 지갑, 채굴이 가능하다.


일렉트로니움은 모바일 생태계를 목표료 구현되었으며 21억개의 발행량, 빠른 트랜젝션, 높은 익명성의 특징을 가지고 있으며,


확실히 다른 코인들과 차별점이 존재합니다.


현재 일렉트로니움은 현재 Android, IOS 두 운영체제에서 모두 사용이 가능합니다. 


여기서 주목할 점은 모바일 프로세서를 통한 채굴이 가능하다는 점입니다. 과연 모바일 프로세서가 얼마나 기여할지는 모르겠지만


확실하게 보상을 준다는 것에 초점을 맞추면 되겠습니다.

* 오피셜에 의하면 모바일 채굴은 블록체인 네트워크에 그다지 큰 기여는 하지 못한다고 합니다.


스크린샷 이미지


이렇게 마이닝을 시작하면 백그라운드에서 가동되며 채굴을 합니다. 


기존 GPU 를 이용한 채굴방식에 비하면 상당히 접근성있고 가벼운? 보상시스템이라고 생각합니다. 


많은 사람이 참여할 수록 좋은 블록체인이기 때문에 이 부분은 상당히 강점이 되겠군요.


모바일을 통해 현재 시세로 하루에 약 2~300원 정도의 ETN 채굴이 가능하다고 합니다. 


다만 채굴프로그램을 가동할 경우 휴대폰이 쉬지 않고 일을 하기 때문에 지금 사용하시는 휴대폰 보다는 


사용하지 않는 휴대폰으로 먼저 어느 정도 자원을 소모하는지 테스트할 필요가 있을것 같습니다.



거래소


현재 일렉트로니움 거래량의 약 80%를 차지하는 상위 3개의 거래소 목록입니다. 이외에도 6곳 정도의 거래소에서 거래되고 있습니다.





다음 포스팅에는 일렉트로니움 지갑을 리눅스 환경에서 설치해 보도록 하겠습니다. 


[블록체인] Linux 에서 Electroneum node 설치하기 -1 : https://good-coding.tistory.com/12

                                                                


공식사이트 : https://electroneum.com/

git : https://github.com/electroneum/electroneum



반응형

+ Recent posts