비트(bit)는 간단하게 2진수로 두가지 상태를 표현한다.
즉, 0과 1로 표기를 하게된다.
bit : 0, 1
Java에서 bit 연산자는 다음과 같다.
& AND
| OR
^ XOR
<< left shift
>> right shift
~ NOT
비트연산자는 총 6개가 있으며,
다음은 코드로 작성된 연산 예제이다.
// AND 연산 예제)
int num;
num = 0xD3 & 0xF0;
System.out.println("num = " + num);
System.out.printf("0x%x ", num);
// console result //
/*
* num = 208
* 0xd0
*/
// Commentary //
/*
* 8421 8421 // 16진법 자리수 계산법
*
* 1101 0011 // 0xD3
* 1111 0000 // 0xF0
*
* 1101 0000 = 0xd0
*/
// OR 연산 예제)
int num;
num = 0xD3 | 0xF0;
System.out.println("num = " + num);
System.out.printf("0x%x", num);
// console result //
/*
* num = 243
* 0xf3
*/
// Commentary //
/*
* 8421 8421
*
* 1101 0011
* 1111 0000
*
* 1111 0011 = 0xf3
*/
// XOR 연산 예제)
int num;
num = 0xD3 ^ 0xF0;
System.out.println("num = " + num);
System.out.printf("0x%x", num);
// console result //
/*
* num = 35
* 0x23
*/
// Commentary //
/*
* 8421 8421
*
* 1101 0011
* 1111 0000
*
* 0010 0011 = 0x23
*/
num = num ^ 0xF0;
System.out.println("num = " + num);
System.out.printf("0x%x", num);
// console result //
/*
* 0xd3
*/
// Commentary //
/*
* 8421 8421
*
* 0010 0011
* 1111 0000
*
* 1101 0011 = 0xd3
*/
// XOR 연산은 같은 연산을 한번더 하게 되면 원래 숫자로 되돌아온다.
// ~ 반전 연산 예제) 0 -> 1 1 -> 0
byte by;
by = ~0x55;
System.out.println("by = " + by);
System.out.printf("0x%x \n", by);
// console result //
/*
* by = -86
* 0xaa
*/
// Commentary //
/*
* 8421 8421
*
* 0101 0101
* 1010 1010
*
* 1010 1010 AA
*/
// 모든 0과 1이 뒤집히기 때문에 부호를 나타내는 맨앞의 0과 1도 바뀌므로,
// 예상하지 못한 결과가 나올 수 있으므로 주의하자.
// left shift 연산 예제)
int bit;
bit = 0x1 << 2;
System.out.println("bit = " + bit);
// console result //
/*
* bit = 4
*/
// Commentary //
/*
* simple result : *2
*
* 0001 -> 1
* 0010 -> 2
* 0100 -> 4
*/
// 간단하게 <<1당 곱하기 2를 한 값이 나오게 된다.
// right shift 연산 예제)
int bit;
bit = 0x4;
bit = bit >> 1;
System.out.println("bit = " + bit);
// console result //
/*
* bit = 2
*/
// Commentary //
/*
* simple result : /2
*
* 0100 -> 4
* 0010 -> 2
* 0001 -> 4
*/
// left shift와 반대로 >>1당 나누기2 한 값 으로 나오게 되며, 0보다 작아지지 않는다.
'Language > Java' 카테고리의 다른 글
[for] loop ([for] 반복문) (0) | 2019.12.01 |
---|---|
eclipse workspace set up (자바 이클립스 설정) (0) | 2019.11.30 |
Logical operator (자바 논리연산자) (0) | 2019.11.30 |
[%] operator ([%] 연산자) 홀수 짝수 찾기 (0) | 2019.11.30 |
[if else] Condition sentence([if else]조건문) (0) | 2019.11.30 |