JAVA
-
Test021 ~ 024 비트 단위 연산자2020.09.01
-
음의 정수를 표현하는 방법2020.09.01
-
Test020 자바의 입출력을 활용하여 사칙연산 하기2020.09.01
-
Test019 실수형 데이터타입의 정밀도 테스트2020.09.01
-
Test018 자바의 기본 입출력 java.util.Scanner(퀴즈2)2020.09.01
-
Test017 자바의 기본 입출력 java.util.Scanner(퀴즈1)2020.09.01
Test021 ~ 024 비트 단위 연산자
1. 비트열 반전 연산자 (~)
public class Test021 { public static void main(String[] args) { int a = 10, b = -10; System.out.printf("~a : %d\n", ~a); System.out.printf("~b : %d\n", ~b); } } // 실행 결과 /* ~a : -11 ~b : 9 계속하려면 아무 키나 누르십시오 . . . */
2. AND, OR, XOR 연산자 (&, |, ^)
public class Test022 { public static void main(String[] args) { int a = 13, b = 7; int c, d, e; c = a & b; // 비트 AND d = a | b; // 비트 OR e = a ^ b; // 비트 XOR System.out.printf("a & b : %d\n",c); System.out.printf("a | b : %d\n",d); System.out.printf("a ^ b : %d\n",e); } } // 실행 결과 /* a & b : 5 a | b : 15 a ^ b : 10 계속하려면 아무 키나 누르십시오 . . . */
3. 시프트 연산(<<, >>, <<<, >>>)
왼쪽 시프트연산을 한번 수행하면 2배가 되고 오른쪽으로 시프트연산을 한번 수행하면 1/2배가 된다.
public class Test024 { public static void main(String[] args) { // | int x = 128; // 00000000 00000000 00000000 10000000 System.out.printf("x << 3 : %d\n", x << 3); // 00000000 00000000 00000100 00000000 System.out.printf("x * 8 : %d\n", x * 8); // | System.out.printf("x >> 3 : %d\n", x >> 3); // 00000000 00000000 00000000 00010000 System.out.printf("x / 8 : %d\n", x / 8); System.out.printf("x << 24 : %d\n", x << 24); //--==>> x << 24 : -2147483648 // | // 10000000 00000000 00000000 00000000 } }
4. 두 수의 교환
일반적인 두 변수의 자리 바꿈은 temp와 같은 임시저장을 위한 변수를 만들어 이를 이용해 두 변수를 교환한다.
public class Test023 { public static void main(String[] args) { // ○ 일반적인 두 변수(a, b)의 자리 바꿈 int a=10, b=20; //-- 내용물을 바꾸기 위한 두 정수 int temp; //-- 임시 저장 변수 // 내용물을 바꾸기 전 확인 System.out.println("a : " + a + ", b : " + b); // 연산 및 처리(내용물 바꾸기 → 기본 대입 연산 활용) temp = a; a = b; b = temp; // 연산 처리 후 결과 확인 System.out.println("a : " + a + ", b : " + b); } }
이를 xor연산을 다음과 같이 수행하면 아래와 같이 간단하게 해결할 수 있다.
public class Test023 { public static void main(String[] args) { // ○ 비트 단위 연산자 "XOR" 연산자를 활용하여 // 두 변수에 담겨있는 내용(값) 바꾸기 // 주요 변수 선언 및 초기화 int x = 20, y = 23; // 각 변수에 담긴 내용물 확인 System.out.printf("x : %d, y : %d\n", x, y); // 연산 및 처리 /* x = x ^ y; y = y ^ x; x = x ^ y; */ y = y ^ x; x = x ^ y; y = y ^ x; // 연산 처리 후 결과 확인 System.out.printf("x : %d, y : %d\n",x, y); } } // 실행 결과 /* x : 20, y : 23 x : 23, y : 20 */
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
Test026 조건 연산자(삼항 연산자) (1) (0) | 2020.09.02 |
---|---|
Test025 논리 연산자 (0) | 2020.09.02 |
음의 정수를 표현하는 방법 (0) | 2020.09.01 |
Test020 자바의 입출력을 활용하여 사칙연산 하기 (0) | 2020.09.01 |
Test019 실수형 데이터타입의 정밀도 테스트 (0) | 2020.09.01 |
음의 정수를 표현하는 방법
■■■음의정수표현■■■
①. -10을 byte 기반 비트열로 나타낸다.
ㄱ. 0 0001010 → 10을 byte기반으로 나타냄
ㄴ. 1 1110101 → 1의 보수를 취한다
ㄷ. 1 1110101 + 00000001 → 2의 보수를 취한다
1 1110101
0 0000001 +
--------------
11110110
ㄹ. byte 기반으로 나타낸 10과 -10을 합하여 합이 0이 맞는지 확인
1 1110110
0 0001010 +
---------------
1 0 0000000
※ 11110110
②. -27을 byte 기반 비트열로 나타낸다.
ㄱ. 0 0011011 → 27을 byte기반으로 나타냄
ㄴ. 1 1100100 → 1의 보수를 취한다
ㄷ. 1 1100100 + 0 0000001 → 2의 보수를 취한다
1 1100100
0 0000001 +
-----------------
1 1100101
ㄹ. byte 기반으로 나타낸 27과 -27을 합하여 합이 0이 맞는지 확인
0 0011011
1 1100101 +
-----------------
1 0 0000000
※ 1 1100101
③. -31을 byte 기반 비트열로 나타낸다.
ㄱ. 0 0011111
ㄴ. 1 1100000
ㄷ. 1 1100001
※ 1 1100001
④. -13을 byte 기반 비트열로 나타낸다.
ㄱ. 0 0001101
ㄴ. 1 1110010
ㄷ. 1 1110011
※ 1 1110011
⑤. byte 기반의 11001010을 10진수 정수형으로 나타낸다.
ㄱ. 2의 보수가 취해진 11001010에서 1을 뺀다.
1 1001010
0 0000001 -
-------------------
1 1001001
ㄴ. 1의 보수를 취한다.
0 0110110
ㄷ. 10진수로 변환후 -부호를 붙인다.
※ -54
⑥. byte 기반의 11110101을 10진수 정수형으로 나타낸다.
ㄱ.1 1110101 - 0 0000001 = 1 1110100
ㄴ.0 0001011
ㄷ. -11
※ -11
⑦. byte 기반의 10000001을 10진수 정수형으로 나타낸다.
ㄱ.1 0000001 - 0 0000001 = 1 0000000
ㄴ.0 1111111
ㄷ.-127
※ -127
⑧. byte 기반의 10101010을 10진수 정수형으로 나타낸다.
ㄱ. 1 0101010 - 0 0000001 = 1 0101001
ㄴ. 0 1010110
ㄷ. -86
※ -86
⑨. byte 기반의 10000101을 10진수 정수형으로 나타낸다.
ㄱ. 1 0000101 - 0 0000001 = 1 0000100
ㄴ. 0 1111011
ㄷ. -123
※ -123
⑩.byte 기반의 11111111을 10진수 정수형으로 나타낸다.
ㄱ. 1 1111111 - 0 0000001 = 1 1111110
ㄴ. 0 0000001
ㄷ. -1
※ -1
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
Test025 논리 연산자 (0) | 2020.09.02 |
---|---|
Test021 ~ 024 비트 단위 연산자 (0) | 2020.09.01 |
Test020 자바의 입출력을 활용하여 사칙연산 하기 (0) | 2020.09.01 |
Test019 실수형 데이터타입의 정밀도 테스트 (0) | 2020.09.01 |
Test018 자바의 기본 입출력 java.util.Scanner(퀴즈2) (0) | 2020.09.01 |
Test020 자바의 입출력을 활용하여 사칙연산 하기
※ 사용자로부터 임의의 정수를 두 번 입력받아 사칙연산 및 나머지 연산을 수행하여 그 결과를 출력하는 프로그램을 구현한다. 단, 입력받는 과정은 BufferedReader 를 활용할 수 있도록 하고 출력하는 과정은 printf() 메소드를 활용할 수 있도록 한다. 또한, 나눗셈 연산은 편의상 정수 기반으로 처리한다.
실행 예)
첫 번째 정수 입력 : 10
두 번째 정수 입력 : 2
=====[결과]=====
10 + 2 = 12
10 - 2 = 8
10 * 2 = 20
10 / 2 = 5
10 % 2 = 0
================
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Test020 { public static void main(String[] args) throws IOException { // 주요 변수 선언 int num1, num2; //-- 사용자 입력값을 담을 변수 int res1, res2, res3, res4, res5; //-- 연산 결과를 담을 변수 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 연사 및 처리 // ① 사용자에게 안내 메세지 출력 System.out.print("첫 번째 정수 입력 : "); // ② 사용자가 입력한 값(문자열)을 정수형태로 변환한 후 변수 num1 에 담아내기 num1 = Integer.parseInt(br.readLine()); // ③ 사용자에게 안내 메세지 출력 System.out.print("두 번째 정수 입력 : "); // ④ 사용자가 입력한 값(문자열)을 정수형태로 변환한 후 변수 num2 에 담아내기 num2 = Integer.parseInt(br.readLine()); // ⑤ 산술 연산 수행 res1 = num1 + num2; res2 = num1 - num2; res3 = num1 * num2; res4 = num1 / num2; res5 = num1 % num2; // 결과 출력 System.out.printf("=====[결과]=====\n"); System.out.printf("%d + %d = %d\n", num1, num2, res1); System.out.printf("%d - %d = %d\n", num1, num2, res2); System.out.printf("%d * %d = %d\n", num1, num2, res3); System.out.printf("%d / %d = %d\n", num1, num2, res4); System.out.printf("%d %% %d = %d\n", num1, num2, res5); System.out.printf("================\n"); /* // BufferedReader 인스턴스 생성 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 주요 변수 선언 int num1, num2; // 연산 및 처리 System.out.print("첫 번째 정수 입력 : "); num1 = Integer.parseInt(br.readLine()); System.out.print("두 번째 정수 입력 : "); num2 = Integer.parseInt(br.readLine()); // 결과 출력 System.out.println("=====[결과]====="); System.out.println(num1 + " + " + num2 + " = " + (num1 + num2)); System.out.println(num1 + " - " + num2 + " = " + (num1 - num2)); System.out.println(num1 + " * " + num2 + " = " + (num1 * num2)); System.out.println(num1 + " / " + num2 + " = " + (num1 / num2)); System.out.println(num1 + " % " + num2 + " = " + (num1 % num2)); System.out.println("================"); */ } } // 실행 결과 /* 첫 번째 정수 입력 : 10 두 번째 정수 입력 : 2 =====[결과]===== 10 + 2 = 12 10 - 2 = 8 10 * 2 = 20 10 / 2 = 5 10 % 2 = 0 ================ 계속하려면 아무 키나 누르십시오 . . . */
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
Test021 ~ 024 비트 단위 연산자 (0) | 2020.09.01 |
---|---|
음의 정수를 표현하는 방법 (0) | 2020.09.01 |
Test019 실수형 데이터타입의 정밀도 테스트 (0) | 2020.09.01 |
Test018 자바의 기본 입출력 java.util.Scanner(퀴즈2) (0) | 2020.09.01 |
Test017 자바의 기본 입출력 java.util.Scanner(퀴즈1) (0) | 2020.09.01 |
Test019 실수형 데이터타입의 정밀도 테스트
※ 아래는 float(4 Byte) 보다 double(8 Byte)가 더 정밀하다는 것을 보여준다
public class Test019 { public static void main(String[] args) { // 주요 변수 선언 float a = 0; double b = 0; // 연산 및 처리 → 반복 연산 → 100000(십만)번 반복 for(int i = 1; i<=100000; i++) { a += 100000; // 변수 a 를 100000 만큼 증가시켜라 b += 100000; // 변수 b 를 100000 만큼 증가시켜라 } // 결과 출력 System.out.println("float a : " + (a/100000)); System.out.println("double b : " + (b/100000)); } } // 실행 결과 /* float a : 99996.055 double b : 100000.0 계속하려면 아무 키나 누르십시오 . . . */
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
음의 정수를 표현하는 방법 (0) | 2020.09.01 |
---|---|
Test020 자바의 입출력을 활용하여 사칙연산 하기 (0) | 2020.09.01 |
Test018 자바의 기본 입출력 java.util.Scanner(퀴즈2) (0) | 2020.09.01 |
Test017 자바의 기본 입출력 java.util.Scanner(퀴즈1) (0) | 2020.09.01 |
Test016 자바의 기본 입출력 java.util.Scanner (0) | 2020.09.01 |
Test018 자바의 기본 입출력 java.util.Scanner(퀴즈2)
※ Scanner클래스의 메소드인 useDelimiter를 이용하여 콤마(,) 문자를 기준으로 next메소드를 사용하여 입력받을 수 있다. 이를 활용하여 학생의 이름과 성적을 입력받는 프로그램을 구현하여라.
import java.util.Scanner; public class Test018 { public static void main(String[] args) { // Scnanner 인스턴스 생성 Scanner sc = new Scanner(System.in); // 주요 변수 선언 String name; int kor, eng, mat, tot; // 연산 및 처리 System.out.print("이름,국어,영어,수학 입력(',' 구분) : "); sc = new Scanner(sc.next()).useDelimiter("\\s*,\\s*"); // ----------- // 조윤상,90,80,70 name = sc.next(); //김승범 kor = sc.nextInt(); // 90 eng = sc.nextInt(); // 80 mat = sc.nextInt(); // 70 tot = kor + eng + mat; // 결과 처리 System.out.println(); System.out.println(">> 이름 : " + name); System.out.println(">> 총점 : " + tot); } }
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
Test020 자바의 입출력을 활용하여 사칙연산 하기 (0) | 2020.09.01 |
---|---|
Test019 실수형 데이터타입의 정밀도 테스트 (0) | 2020.09.01 |
Test017 자바의 기본 입출력 java.util.Scanner(퀴즈1) (0) | 2020.09.01 |
Test016 자바의 기본 입출력 java.util.Scanner (0) | 2020.09.01 |
Test015 자바의 기본 입출력 System.out.printf() (0) | 2020.09.01 |
Test017 자바의 기본 입출력 java.util.Scanner(퀴즈1)
import java.util.Scanner; public class Test017 { public static void main(String[] args) { // Scanner 인스턴스 생성 Scanner sc = new Scanner(System.in); // 주요 변수 선언 String name; //-- 이름 int kor, eng, mat, tot; //-- 국어, 영어, 수학, 총점 // 연산 및 처리 // ① 사용자에게 안내 메세지 출력 System.out.print("이름 국어 영어 수학 점수입력(공백구분) : "); // 조윤상 90 80 70 // ② 사용자가 입력한 데이터를 각 변수에 담아내기 name = sc.next(); kor = sc.nextInt(); eng = sc.nextInt(); mat = sc.nextInt(); // ③ 총점 산출 tot = kor + eng + mat; // 결과 출력 System.out.println(); System.out.println(">> 이름 : " + name); System.out.println(">> 총점 : " + tot); } } //실행 결과 /* 이름 국어 영어 수학 점수입력(공백구분) : 조윤상 90 80 70 >> 이름 : 조윤상 >> 총점 : 240 계속하려면 아무 키나 누르십시오 . . . */
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
Test019 실수형 데이터타입의 정밀도 테스트 (0) | 2020.09.01 |
---|---|
Test018 자바의 기본 입출력 java.util.Scanner(퀴즈2) (0) | 2020.09.01 |
Test016 자바의 기본 입출력 java.util.Scanner (0) | 2020.09.01 |
Test015 자바의 기본 입출력 System.out.printf() (0) | 2020.09.01 |
Test014 자바의 입출력 System.in.read (0) | 2020.09.01 |