2014년 9월 3일 수요일

Java 연산자(비트전환 연산자와 논리부정 연산자)

2.3 비트전환 연산자 ~


비트전환 연산자'~'는 정수형과 char형에서만 사용이 되며, 피연산자를 2진수로 표현 했을 때, 0은 1로 1은 0으로 바꾼다. 그래서 연산자 '~'에 의해 비트전환이 되면 피연산자의 부호가 반대로 변경된다.
(byte, short, char형은 int형으로 변경된 후 전환된다)

2진수                  10진수
0/0/0/0/0/0/0/0      +10
1/1/1/1/1/1/1/1      -11

public class operarot5 {

public static void main(String[] args) {

byte b = 10;
System.out.println("b="+b);
System.out.println("~b="+~b);
System.out.println("~b+1="+(~b+1));
}

}

실행결과

b=10
~b=-11
~b+1=-10

결과를 보면, 어떤 양의 정수에 대한 음의 정수를 얻으려면 어떻게 해야하는지 알 수 있습니다. 양의 정수 b가 있을 때, b에 대한 음의 정수를 얻으려면 ~b+1을 계산하면 됩니다.

      2진수                     10진수         
0/0/0/0/1/0/1/0                 10
1/1/1/1/0/1/0/1                -11
1/1/1/1/0/1/0/1                -11
0/0/0/0/0/0/0/1          +)     1
1/1/1/1/0/1/1/0                -10

먼저 10을 2진수로 표현한 다음 0을 1로, 1을 0으로 바꾸고 그 결과에 1을 더하면 -10의 2진 표현을 얻을 수 있다.


public class Operator6 {

public static void main(String[] args) {
byte a = 10;
byte result = (byte) ~a;
System.out.println("a = "+a);
System.out.println("result = "+result);
}
}

실행결과


a = 10
result = -11

연산자 ~는 피연산자 타입이 int보다 작으면, int형으로 변환 후 연산을 수행하기 때문에 위의 예제에서 byte형 변수 a를 int형으로 변환 후 연산을 수행하기 때문에 연산결과를 저장하기 위해서는 int형 변수에 저장하거나, 캐스트 연산자를 사용해야합니다.

2.4 논리부정 연산자 !

이 연산자는 boolean형에만 사용할 수 있으며, true는 false로 false는 true로 변경합니다.
존건문과 반복문의 조건식에 사용되어 조건식을 보다 효율적으로 만들어 줍니다. 연산자 !를 이용해서 한번 누르면 on, 또 한번 누르면 off가 되는 토글버튼을 논리적으로 구현할 수 있습니다.

public class Operator7 {

public static void main(String[] args) {
boolean power = true;
System.out.println(power);
power = !power;
System.out.println(power);
power = !power;
System.out.println(power);
}
}

실행결과

true
false
true


댓글 없음:

댓글 쓰기