728x90
사칙연산
System.out.println("사칙연산");
int a = 10, b = 3;
System.out.println("a = "+a+", b = "+b);//a = 10, b = 3
System.out.println("a + b = "+(a+b));//a + b = 13
System.out.println("a - b = "+(a-b));//a - b = 7
System.out.println("a * b = "+(a*b));//a * b = 30
System.out.println("a / b = "+(a/b));//a / b = 3
System.out.println("a % b = "+(a%b));//a % b = 1
대입연산
System.out.println("대입연산");
System.out.println("a = "+a+", b = "+b);//a = 10, b = 3
System.out.println("a += b = "+(a+=b));//a += b = 13
System.out.println("a = "+a+", b = "+b);//a = 13, b = 3
System.out.println("a -= b = "+(a-=b));//a -= b = 10
System.out.println("a = "+a+", b = "+b);//a = 10, b = 3
System.out.println("a *= b = "+(a*=b));//a *= b = 30
System.out.println("a = "+a+", b = "+b);//a = 30, b = 3
System.out.println("a /= b = "+(a/=b));//a /= b = 10
System.out.println("a = "+a+", b = "+b);//a = 10, b = 3
System.out.println("a %= b = "+(a%=b));//a %= b = 1
System.out.println("a = "+a+", b = "+b);//a = 1, b = 3
단항연산
System.out.println("단항연산"); //1씩 증가
a = 10;
b = 3;
System.out.println("a = "+a+", b = "+b);
System.out.println("++a :"+(++a));//출력선증가
System.out.println("a = "+a+", b = "+b);
System.out.println("a++ :"+(a++));//출력후증가
System.out.println("a = "+a+", b = "+b);
System.out.println("b++ :"+(b++));
System.out.println("a = "+a+", b = "+b);
System.out.println("++b :"+(++b));
System.out.println("a = "+a+", b = "+b);
관계연산
a = 10;
b = 3;
System.out.println("a = "+a+", b = "+b);
System.out.println("a==b :"+(a==b));
System.out.println("a!=b :"+(a!=b));
System.out.println("a<b :"+(a<b));
System.out.println("a>b :"+(a>b));
삼항연산
System.out.println("삼항연산"); // 조건 ? 참 : 거짓
//String 포함 모든 type 에 적용 가능하다.
//a와 b 중 큰 값을 출력하기.
a = 10;
b = 3;
int max = (a>b ? a : b);
boolean bol = (a>b)? true : false;
char cc = (a>b)? 'T' :'F';
String ss = (a>b)?"a가 크다" : "b가 크다";
//String 포함 모든 type 에 적용 가능하다.
System.out.printf("int max = %d , boolean bol = %b , char cc = %c , String ss = %s %n" ,max, bol , cc , ss);
//결과 : int max = 10 , boolean bol = true , char cc = T , String ss = a가 크다
System.out.println();
논리 연산
System.out.println("논리연산");
//=집합연산 and(&&) , or(||) , not(!)
System.out.println("a = "+a+", b = "+b);
//1)and -> 모두 짝수이면 true 다
bol = (a%2==0)&&(b%2==0);
System.out.println("a와 b 가 모두 짝수인가 ?"+bol);
//2)or -> a,b 중 하나라도 짝수이면 true
bol = (a%2==0)||(b%2==0);
System.out.println("a와 b ,둘중 하나라도 짝수인가?"+bol);
//3) ! -> 값을 부정
System.out.println("a와 b ,둘중 하나라도 짝수인가?의 부정:"+!bol);
bit 연산 - shift 연산
x>>y x를 우측으로 y 만큼 이동.
x<<y x 를 좌측으로 y 만큼 이동.
System.out.printf("쉬프트 연산 :10진법 x = %d , y = %d %n",x,y);
System.out.printf("쉬프트 연산 :2진법 x = %s , y = %s %n",Integer.toBinaryString(x),Integer.toBinaryString(y));
//결과 :쉬프트 연산 :2진법 x = 1010 , y = 11
System.out.println("x>>y : "+(x>>y));
//x를 y만큼 이동,
//1010 -> 0101 -> 0010 -> 0001 -> 1
System.out.println("x<<y : "+(x<<y));
//x를 좌측으로 y 만큼이동,
//1010 -> 1 0100 -> 10 1000 -> 101 0000 -> 64+16 => 80
System.out.println("x<<1 : "+(x<<1));
//x 를 좌측으로 1만큼 이동.
//1010 -> 1 0100 => 20
정수에 들어있는 모든 비트를 오른쪽이나 왼쪽으로 시프트 하는 연산자.
정수내의 모든 비트를 오른쪽으로 이동하는것은 2를 곱한것과 같고.
왼쪽으로 이동하는 것은 2를 나누는 것과 같은 효과를 나타낸다.
bit 연산 -논리 연산
and(&)-두개가 1이면 1
or(|)- 둘중 하나라도 1 이면 1
xor(^)- 두개가 같으면 0
System.out.printf("논리 연산 :10진법 x = %d , y = %d %n",x,y);
System.out.printf("논리 연산 :2진법 x = %s , y = %s %n",Integer.toBinaryString(x),Integer.toBinaryString(y));
System.out.println("x&y : "+(x&y));
//1010 =x
//0011 =y
//----
//0010 => 2
System.out.println("x|y : "+(x|y));
//1010 =x
//0011 =y
//----
//1011 => 11
System.out.println("x^y : "+(x^y));
//1010 =x
//0011 =y
//----
//1001 => 9
비트 연산자 (&) AND
논리 연산자의 논리곱 연산과 동일하게 동작 특정 비트에서 정보를 추출할 때 많이 사용
비트 연산자 (|) OR
논리 연산자의 논리합 연산과 동일하게 동작 특정 비트 정보를 1로 변환할 때 많이 사용
비트 연산자 (^) XOR
두 피연산자의 각 비트값이 같으면 0을 반환하고, 다르면 1을 반환
입력 피연산자의 정보를 임의로 변환하고 다시 복원할 수 있는 특징이 있다.
암호 프로그램에서 다양하게 응용됨
비트 연산자를 활용한 암호화와 복호화
int password = 1234567 , d=0;
int key = 0x1ABC55; //16진수로.
System.out.println("암호화 전 password : "+ password);
//암호화 작업(encryption)
d = password^key;
System.out.println("암호화 된 password : "+ d);
//복호화 작업(decryption)
d = d^key;
System.out.println("복호화 된 password : "+ d);
'Developer > JAVA' 카테고리의 다른 글
JAVA , 제어문 (반복문) 기초와 예제 (0) | 2024.07.31 |
---|---|
JAVA , 제어문 (조건문) if / switch (0) | 2024.07.30 |
JAVA , Date , Scanner (4) | 2024.07.21 |
JAVA, 진수와 Interger 메서드 , String 메서드 (2) | 2024.07.21 |
JAVA , 자동 형변환과 강제 형변환 (0) | 2024.07.19 |