package 연산자.샘플;
import java.util.Scanner;
public class OperatorSample {
//비트(bit) 연산자
//~(틸드: Tield, 2), <<, >>, >>> (쉬프트: shift, 5)
//비트논리연산자 : &(and, 8), ^(xor, 9), |(or, 10)
//정수에만 사용하는 연산자임
//메모리에 기록된 정수의 비트값(1, 0)을 계산함
//메모리에 기록된 비트값을 정수 1 또는 0으로 바꾸어서
//출력 처리하는 메소드
public void printBit(int num){
System.out.print(num + " : ");
for(int i = 31; i >= 0; i--)
System.out.print(num >> i & 1);
System.out.println();
}
public void testTeild(){
//비트반전연산자
//비트 1은 0으로, 비트 0은 1로 바꾸는 연산자
System.out.print("정수 하나 입력 : ");
int num = new Scanner(System.in).nextInt();
printBit(num);
printBit(~num);
}
public void testShift(){
//shift 연산자 : 비트 자리 이동 연산자
//정수값 >> 자리이동값 : 2의 제곱수에 대한 나누기
//정수값 << 자리이동값 : 2의 제곱수에 대한 곱하기
//정수값 >>> 자리이동값
//정수의 비트값을 이동방향으로 자리 이동시킴
//<< : 비게 되는 오른쪽은 무조건 0 채움
//>> : 비게 되는 왼쪽은 양수이면 0, 음수이면 1 채움
// 부호비트를 채움
//>>> : 비게 되는 왼쪽은 무조건 0 채움
// 자바만 제공하는 연산자임
Scanner sc = new Scanner(System.in);
System.out.print("정수 하나 입력 : ");
int num = sc.nextInt();
System.out.print("비트 자리 이동값 : ");
int move = sc.nextInt();
printBit(num);
printBit(num << move);
printBit(num >> move);
printBit(num >>> move);
}
public void testBitLogical(){
//비트논리연산자 : &(AND), ^(XOR), |(OR)
//AND : 1 & 1 => 1, 나머지 경우는 모두 0
//OR : 0 | 0 => 0, 나머지 경우 결과는 모두 1
//XOR : 1 ^ 0, 0 ^ 1 => 1
// 1 ^ 1, 0 ^ 0 => 0
// 비교되는 두 비트가 다를 때 1, 같은 때 0임
Scanner sc = new Scanner(System.in);
System.out.print("첫번째 정수 : ");
int first = sc.nextInt();
System.out.print("두번째 정수 : ");
int second = sc.nextInt();
printBit(first);
printBit(second);
System.out.println("--------------------------");
printBit(first & second);
printBit(first ^ second);
printBit(first | second);
}
public void testComplex(){
//복합 대입 연산자
//산술대입연산자 : +=, -=, *=, /=, %=
//쉬프트대입연산자 : <<=, >>=, >>>=
//비트논리대입연산자 : &=, ^=, |=
int num = 10;
System.out.println("num : " + num);
//1이 아닌 값의 증가/감소가 필요할 때
//num 변수의 값을 3증가 시킬 때
//num = num + 3;
num += 3; //사용 권장함. 연산속도가 빠름
System.out.println("num : " + num);
num -= 2; //num = num - 2; 결과가 같음
System.out.println("num : " + num);
num *= 4; //num = num * 4;
System.out.println("num : " + num);
num /= 4; //num = num / 4;
System.out.println("num : " + num);
num %= 2; //num = num % 2;
System.out.println("num : " + num);
num = 10;
System.out.println("num : " + num);
num <<= 2; //num = num << 2;
System.out.println("num : " + num);
num >>= 2; //num = num >> 2;
System.out.println("num : " + num);
num = 10;
num >>>= 3; //num = num >>> 3;
System.out.println("num : " + num);
num = 10;
System.out.println("num : " + num);
num &= 3; //num = num & 3;
System.out.println("num : " + num);
num = 10;
System.out.println("num : " + num);
num ^= 3; //num = num ^ 3;
System.out.println("num : " + num);
num = 10;
System.out.println("num : " + num);
num |= 3; //num = num | 3;
System.out.println("num : " + num);
}
}
'Example 2018' 카테고리의 다른 글
제어문연습프로젝트 - 다중 if문 : 정수 중 큰수, 학점, 문자구별 (0) | 2018.04.09 |
---|---|
제어문연습프로젝트 - if else : 짝수홀수, 국영수 총점/평균, 양수 사칙연산 (0) | 2018.04.09 |
제어문연습프로젝트 - if : 유니코드출력, 회원가입프로그램 (0) | 2018.04.09 |
제어문연습프로젝트 - 조건문(if) main (0) | 2018.04.09 |
제어문연습프로젝트 - 연산자샘플 main (0) | 2018.04.09 |
연산자 연습 프로젝트 - 연산자통합, 주민등록처리, 삼항연산자 (0) | 2018.04.08 |
연산자 연습 프로젝트 - 연산자테스트샘플 main (0) | 2018.04.08 |
testOperatorProject - 국영수 총점, 평균 계산 프로그램 (0) | 2018.04.08 |