정수를 입력 받아 양수인지 음수인지 0인지를 판별.

자바에서 유일하게 피연산자가 3개인 조건연산자.

변수 = 조건식 ? 값 또는 연산식 : 값 또는 연산식

n>0 ? "양수" : (n<0 ? "음수" : "영") 

 

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0706_복습  (0) 2021.07.06
0705_Ex20_Operator  (0) 2021.07.06
0705_Ex16_Operator  (0) 2021.07.06
0705_Ex15_Operator  (0) 2021.07.06
0705_Ex14_Operator  (0) 2021.07.06

정수를 입력 받아 홀수인지 짝수인지 판별하기

0001 은 1

0011 은 3

0111 은 7

1111 은 15

 

0001

0001 AND 연산

0001

 

0011

0001 AND 연산

0001

 

0111

0001 AND 연산

0001 

홀수의 경우 1로 AND 했을 때 1과 같은 값이 나온다. (짝수는 다른 0011, 0101...처럼 1과 같지 않은 값이 나온다)

연산자의 우선순위가 ==이 빠르기 때문에 ()로 AND 연산을 먼저 하라고 해줘야한다. 

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0705_Ex20_Operator  (0) 2021.07.06
0705_Ex17_Operator  (0) 2021.07.06
0705_Ex15_Operator  (0) 2021.07.06
0705_Ex14_Operator  (0) 2021.07.06
0705_Ex13_Bit  (0) 2021.07.06

int a;

a = (+-+-+-((5%3)*(4/2)));
System.out.println(a);

/*

우선 연산 (+-+-+-(2*2))

-4 가 나온다.

*/

int x=2, y=5, z=0;
x+=3+2;
System.out.println(x); 
/*

우변을 먼저 계산한다. x+=5

x=7

*/
x += y -= z = 4; 
System.out.println(x+","+y+","+z);

/*

우변을 먼저 계산한다

x +=y -= 4

x+=1

x=3

따라서 3, 1, 4 이다.

*/

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0705_Ex17_Operator  (0) 2021.07.06
0705_Ex16_Operator  (0) 2021.07.06
0705_Ex14_Operator  (0) 2021.07.06
0705_Ex13_Bit  (0) 2021.07.06
0705_Ex12_Bit  (0) 2021.07.06

short a, b;

a = 10;
b = 5;
/*

b = b + a; 는 컴파일 오류임. +연산은 int로 형 변환이 일어나기 때문이다.

따라서 b = (short)(b + a); 로 해야한다.

*/
b += a; 
System.out.println(b);

15

/*

b +=a; 는 형 변환이 일어나지 않는 연산이다. b=b+a와 결과가 동일하다.

*/
char c = 'A';
c += 10;
System.out.println(c); 

/*

65+10 = 75 에 해당하는 char는 K 이다.

*/
float f = 3.5f;
char ch = 'A';
ch += f;
System.out.println(ch);

/*

65+3.5 = 68.5 이지만 char에 들어갈때 알아서 정수가 들어간다. 68에 해당하는 char는 D.

*/

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0705_Ex16_Operator  (0) 2021.07.06
0705_Ex15_Operator  (0) 2021.07.06
0705_Ex13_Bit  (0) 2021.07.06
0705_Ex12_Bit  (0) 2021.07.06
0705_Ex11_Bit  (0) 2021.07.06

int x, y, z;
boolean b;

x=y=z=1;
b = (++x != 0) || (++y != 0) || (++z !=0);
System.out.println(x+","+y+","+z+","+b);

/*

||연산에서 제일 첫번 째가 true 이므로 단축 연산.

2, 1, 1, true

*/

x=y=z=1;
b = (++x != 0) | (++y != 0) | (++z !=0); 
System.out.println(x+","+y+","+z+","+b);
/*

비트연산은 단축연산을 하지 않는다.

2,2,2,true
*/
x=y=z=-1;
b = (++x != 0) && (++y != 0) && (++z !=0);
System.out.println(x+","+y+","+z+","+b);
/*

첫 항이 false이므로 단축연삭.

0, -1, -1, false

*/
x=y=z=-1;
b = (++x != 0) & (++y != 0) & (++z !=0);
System.out.println(x+","+y+","+z+","+b);

/*

비트 연산은 단축연산을 하지 않는다.

0, 0, 0, false

*/

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0705_Ex15_Operator  (0) 2021.07.06
0705_Ex14_Operator  (0) 2021.07.06
0705_Ex12_Bit  (0) 2021.07.06
0705_Ex11_Bit  (0) 2021.07.06
0705_Ex10_Bit  (0) 2021.07.06

int a;

a = 12 << 3;
System.out.println(a);

/*

<< 는 shift 연산이다. 

0000 1100 이면 0110 0000 으로 바꾸라는 의미.

값은 96이다.

*/

a = 12 >> 3;
System.out.println(a);

/*

0000 1100 을 0000 0001로 바꾸라는 의미.

값은 1이다.

*/

a = -32 >> 3;
System.out.println(a);

/*

0010 0000 를 2의 보수로 저장

1110 0000 임. 이것을 1111 1100으로 바꿈. 이것은 -4이다. 

*/
a = -32 >>>3;
System.out.println(a); 

/*

>>> 연산은 이것만 존재( <<<는 없다)

이것은 빈공간에 0을 채운다. 

예를 들어

1110 0000 이었던 것을 0001 1100이 되는 것임. 

그래서 값은 저렇게 나온다고 함.

*/

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0705_Ex14_Operator  (0) 2021.07.06
0705_Ex13_Bit  (0) 2021.07.06
0705_Ex11_Bit  (0) 2021.07.06
0705_Ex10_Bit  (0) 2021.07.06
0705_Ex09_Logical  (0) 2021.07.05

int a, b, c;
a = 10;
b = 5;

 

c = a;
a = b;
b = c;
System.out.println(a + "," + b);

/*

a 와 b의 위치를 바꿀 때. 새로운 위치 c를 설정해서 바꿈.

*/

 

a = 10;
b = 5;
a = a ^ b;
b = b ^ a;
a = a ^ b;
System.out.println(a + "," + b);
/*

1010

0101 XOR연산

1111 를 a에 넣는다. 15.

 

0101

1111 XOR 연산

1010 을 b에 넣는다. 10

 

1111

1010 XOR

0101 을 a에 넣는다. 5

다른 새로운공간c를 사용하지 않고 바꾸는 방법,

*/


a = 17;
b = 13;
System.out.println(a);

a = a^b;
System.out.println(a);

/*

0001 0001

0000 1101 XOR연산

0001 1100 을 a에 저장한다. 28

*/

a = a ^ b;
System.out.println(a);

/*

0001 1100

0000 1101 XOR 연산

0001 0010 을 a에 저장한다. 17.

*/

즉 XOR 연산을 두번하면 자신의 값이 됨. 

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0705_Ex13_Bit  (0) 2021.07.06
0705_Ex12_Bit  (0) 2021.07.06
0705_Ex10_Bit  (0) 2021.07.06
0705_Ex09_Logical  (0) 2021.07.05
0705_Ex08_Logical  (0) 2021.07.05

int a = 12;
int b = 6;
int c;

c = ~b;
System.out.println("~6:"+c);

/*

0000 0000 0000 0000 0000 0000 0000 0110  (길어서 0000 0110 라고하겠음)

1111 1111 1111 1111 1111 1111 1111 1001 이게 c의 값이다.

이것은 2의 보수로 저장되어있는 음수 # 임. 근데 #을 모르니까 다시 2의 보수를 취한다.

0000 0000 0000 0000 0000 0000 0000 0111 이다. 

즉 

~6:-7 이다.

*/

 


c = a&b;
System.out.println(c);

/*

& 연산자가 한 개만 사용 되었으므로 비트연산자이다.

1100

0110 을 AND 연산하면 

0100 이다. 따라서 4.
*/


c = a|b;
System.out.println(c);

/*

| 연산자가 한 개만 사용되었으므로 비트연산자.

1100

0110 을 OR연산하면

1110 이다. 따라서 14.

*/


c = a^b;
System.out.println(c);

/*

^연산은 XOR연산.

1100

0110 을 XOR연산하면. 

1010 이다. 따라서 10.

*/

a = 13;
b = a & 1;
System.out.println(b);

/*

1101

0001 AND 

0001 따라서 1.

*/

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0705_Ex12_Bit  (0) 2021.07.06
0705_Ex11_Bit  (0) 2021.07.06
0705_Ex09_Logical  (0) 2021.07.05
0705_Ex08_Logical  (0) 2021.07.05
0705_Ex07_Logical  (0) 2021.07.05

+ Recent posts