증산시 관비 논삼대

short num = 10;
num = (short)(num + 77L); // 형 변환 안하면 컴파일 오류
int rate = 3;
rate = (int)(rate * 3.5); // 형 변환 안하면 컴파일 오류
// 복합 대입연산자를 사용하면 형변환 안써도됨[좋진 않음]
// 자바에서 자동으로 형변환을 넣어준다
num = 10;
num += 77L; // 형 변환 필요없음
rate = 3;
rate *= 3.5; // 형 변환 필요없음
System.out.println(7.0 == 7)
// true
// 7이 7.0으로 형변환이 일어남
int num1 = 0;
int num2 = 0;
boolean result;
result = ((num1+=10) < 0) && ((num2+=10) > 0);
result = ((num1+=10) > 0) || ((num2+=10) > 0);
System.out.println(num1); // 20
System.out.println(num2); // 0
short num1 = 5;
System.out.println(+num1); // int형으로 되어 출력
short num2 = 7;
short num3 = (short)(+num2); // 형 변환 하지 않으면 오류 발생
// num2가 +연산을 만나 int형으로 바뀐후 short형으로 형변환 해줘야됨
& : AND
| : OR
^ : XOR(다르면 1, 같으면 0)
~ : NOT(비트 반전)
<< 2배증가 : 비트열을 왼쪽으로 이동하고 빈공간을 0으로 채움>> 2배감소 : 비트열을 오른쪽으로 이동하고 빈공간을 음수인경우 1, 양수인 경우 0으로 채움>>> : 비트열을 오른쪽으로 이동하고 빈공간을 0으로 채움byte num;
num = 2; // 00000010
System.out.println((byte)(num << 1)); //00000100
System.out.println((byte)(num << 2)); // 00001000
System.out.println((byte)(num << 3)); // 00010000
num = 8; // 00001000
System.out.println((byte)(num >> 1)); // 00000100
System.out.println((byte)(num >> 2)); // 00000010
System.out.println((byte)(num >> 3)); // 00000001
num = -8; // 11111000
System.out.println((byte)(num >> 1)); // 11111100
System.out.println((byte)(num >> 2)); // 11111110
System.out.println((byte)(num >> 3)); // 11111111
/*
4
8
16
4
2
1
-4
-2
-1
*/