728x90
반응형
SMALL
논리 연산자
논리 연산자 설명
논리 연산자 설명
&& | 논리식이 모두 참이면 참을 반환함. (논리 AND 연산) |
|| | 논리식 중에서 하나라도 참이면 참을 반환 |
! | 논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함. (논리 NOT 연산) |
A | B | A && B | A || B | !A |
true | true | true | true | false |
true | false | false | true | false |
false | true | false | true | true |
false | false | false | false | true |
class Operator7_1 {
public static void main(String[] args) {
boolean result1, result2, result3, result4, reusult5, result6;
char ch1 = 'a', ch2 = 'B'; // 'a' : 97 , 'A' : 65, 'B' : 66, 'C' : 67
result1 = ch1 > 'A' && ch2 < 'C';
result2 = ch1 == 'A' && ch2 < 'C';
result3 = ch1 > 'A' || ch2 < 'C';
result4 = ch1 < 'A' || ch2 > 'C';
System.out.println("&& 연산자에 의한 결과 result1 = " + result1); // true
System.out.println("&& 연산자에 의한 결과 result2 = " + result2); // false
System.out.println("|| 연산자에 의한 결과 result3 = " + result3); // true
System.out.println("|| 연산자에 의한 결과 result4 = " + result4); // false
System.out.println("! 연산자에 의한 결과 result4 = " + !result4); // true
System.out.println();
int num = 10;
// num 은 2의 배수 그리고 3의 배수이다.
reusult5 = num % 2 == 0 && num % 3 == 0;
System.out.println("num 은 2의 배수 그리고 3의 배수 = " + reusult5); // false
// num 은 2의 배수 또는 3의 배수이다.
result6 = num % 2 == 0 || num % 3 == 0;
System.out.println("num 은 2의 배수 또는 3의 배수 = " + result6); // true
}
}
비트 연산자
비트 연산자 설명
& | 대응되는 비트가 모두 1이면 1을 반환함. (비트 AND 연산) |
| | 대응되는 비트 중에서 하나라도 1이면 1을 반환함. (비트 OR 연산) |
^ | 대응되는 비트가 서로 다르면 1을 반환함. (비트 XOR 연산) |
~ | 비트를 1이면 0으로, 0이면 1로 반전 시킴. (비트 NOT 연산, 1의 보수) |
<< | 명시된 수만큼 비트들을 전부 왼쪽으로 이동시킴. (left shift 연산) |
>> | 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴. (right shift 연산) |
>>> | 지정한 수만큼 비트를 전부 오른쪽으로 이동 시키며, 새로운 비트는 전부 0이 됨. |
비트 연산자는 값을 비트 단위로 연산함
따라서 0과 1로 표현이 가능한 정수형이나 형변환이 가능한 자료형만 연산이 가능
class Operator7_2 {
public static void main(String[] args) {
int num1 = 8, num2 = -8;
System.out.println("8의 2진수 = " + Integer.toBinaryString(num1)); // 0 생략 가능!
System.out.println("-8의 2진수 = " + Integer.toBinaryString(num2));
System.out.println("-9의 2진수 = " + Integer.toBinaryString(-9)); // 32bit, int = 4byte
// 00000000000000000000000000001000 , 8
// 11111111111111111111111111111000 , -8
System.out.println("& 연산자에 의한 결과 = " + (num1 & num2)); // 00000000000000000000000000001000, 8
System.out.println("| 연산자에 의한 결과 = " + (num1 | num2)); // 11111111111111111111111111111000, -8
System.out.println("^ 연산자에 의한 결과 = " + (num1 ^ num2)); // 11111111111111111111111111110000, -16
System.out.println("~ 연산자에 의한 결과 = " + ~num1); // 11111111111111111111111111110111, -9
System.out.println("<< 연산자에 의한 결과 = " + (num1 << 2)); // 32
System.out.println(">> 연산자에 의한 결과 = " + (num2 >> 2)); // -2
System.out.println(">>> 연산자에 의한 결과 = " + (num2 >>> 2)); // 1073741822
}
}
2진수의 음수표현
진수의 음수를 표현하는 방식에는 부호 절대값, 1의 보수, 2의 보수가 있습니다.8비트 기준으로 설명
부호 절대값
가장 왼쪽에 있는 비트를 부호비트라고 했을 때 이 부호비트가 '0인지 1인지' 에 따라 양수, 음수로 구분됩니다.
0일때는 양수 , 1일때는 음수 2진수 00000011 = 10진수: 32진수 10000011 = 10진수: -3
1의 보수
1의 보수는 11111111 - x 를 하는 방식입니다.
11111111 - x 는 x 를 반전시킨 것과 같습니다.
11111111 - 00101001 = 11010110즉, 1이면 0, 0이면 1이 됩니다.
- **13을 1의 보수 방식으로 표현해 보겠습니다.**1.13을 2진수로 표현 : 000011012.11111111 - x 공식에 대입3.결과 : 11110010
2의 보수
가장 많이 사용하는 방식
2의 보수는 100000000 - x 를 하는 방식
2의 보수 방식도 가장 왼쪽숫자가 0일 경우 양수, 1일 경우 음수를 표현
- 13을 2의 보수 방식으로 표현해 보겠습니다. 1.13을 2진수로 표현 : 000011012.100000000 - x 공식에 대입3.결과 : 11110011
쉽게 계산하는 방법은 1의 보수를 구한뒤에 나온수에 +1을 하면 됨
- 9를 2의 보수 방식으로 표현 1. 9를 1의 보수 방식으로 표현 : 00001001(9) -> 111101103.결과 : 11110111
- 2.11110110 + 1
728x90
반응형
LIST
'개발 > JAVA' 카테고리의 다른 글
IF (0) | 2023.01.19 |
---|---|
조건 연산자와 대입 연산자 (0) | 2023.01.18 |
비교 연산자와 문자열의 비교 (0) | 2023.01.18 |
Math 클래스와 나머지 연산자 (0) | 2023.01.18 |
사칙 연산자와 산술변환 (0) | 2023.01.18 |