본문 바로가기

bitcamp/JAVA

연산자

1. 결합방향과 우선순위에 대하여 설명하시오.

· 결합방향이란? 연산기호 우선 순위가 같을 때 적용하는 기준이며, 오른쪽 혹은 왼쪽 방향으로 연산된다.

 ex) 대입= 의 결합방향은 ←

 

· 우선순위란? 여러 개의 연산기호가 존재하는 경우 우선적으로 연산되어야 하는 순위를 말하며, 

 가장 높은 연산기호는 괄호이다. []

 ex) int a = 5 + 7;    우선 순위: + > =,  결합방향: 왼쪽

2. 1 초과 100 미만인가? 를 프로그래밍 하시오.

 

3. 2의 배수 또는 3의 배수인가? 를 프로그래밍 하시오.

 

 

4. && 와 || 설명하시오. 

· &&(AND연산자): 조건이 모두 true 일 때, true 저장 (단, 한 개라도 false 이라면 false)

· | | (OR연산자): 조건 중에 단 한 개라도 true 라면 true 저장

· ! (NOT연산자): 반전시켜 얻은 결과를 저장 (true → false, false → true)

 

5. 아래와 같은 결과가 출력되는 이유를 설명하시오.

 

· && 연산은 두 조건이 모두 true 일 때 true를 저장하지만,

 num1의 값이 대입된 후 (num1 += 10) < 0 의 조건이 F를 뜻하므로 뒤에 조건은 실행조차 하지 않는다.

 → 실행되지 않으므로 num2에는 대입되지 않으므로 num2는 그대로 0 저장.

 

· || 연산은 두 조건중 한 개라도 true 이면 true 저장되는데,

 num1=10에 +10이 연산되어 20 저장, (num1 += 10) > 0 의 조건이 T를 뜻하므로 뒤에 조건은 실행되지 않는다.

→ 마찬가지로 조건이 실행되지 않으므로 num2는 0 저장.

6. 아래와 같이 오류가 발생하는 이유를 설명하고 수정하시오.

(형변환과 부호연산자에 대한 이해)

 

· -num은 -1과 num이 연산이 이루어지고 있기 때문에 강제 형변환이 필요하다.

 

· 수정

 

· 또 다른 ex)

 

7. 아래의 비트연산자 4가지를 설명하시오.

· &: 비트 단위로 AND 연산

· | : 비트 단위로 OR 연산 (비트가 한 개라도 1이 있으면 1로 저장)

· ^: 비트 단위로 XOR 연산 (비트 값이 같으면 0, 다르면 1로 저장)

· ~: 반전시켜 얻은 결과를 저장 (!, NOT과 같은 역할)

 

8. 쉬프트 연산자에 대하여 설명하시오.

· << : 비트 열을 왼쪽으로 이동시키고, 이동에 따른 빈 공간은 0으로 채운다. (값의 2배 증가)

        이진수에서 왼쪽(화살표 쪽)으로 shift 시킴

 

· >>: 비트 열을 오른쪽으로 이동시키고, 이동에 따른 빈 공간을 음수의 경우 1, 양수의 경우 0으로 채운다.

       이진수에서 오른쪽(화살표 쪽)으로 shift 시킴

9. 전위연산자와 후위연산자에 대하여 설명하시오. 

· 전위연산자(prefix): 피연산자 저장된 값에 1이 증가 혹은 감소되어 저장된다. (++n, --n)

· 후위연산자(postfix): 실행 단위(;) 혹은 우선적으로 연산이 필요한 것 실행된 후 1이 증가 혹은 감소되어 저장된다 (n++, n--)

 

 

10. 전위증가 연산자와 후위증가 연산자의 차이는?

· 전위 ++num; , 후위 num++;

· 전위, 후위 증가 연산자 모두 num = num + 1; 을 의미하지만

  전위증가는 num의 값에 하나를 증가시킨 후 출력하고, 후위증가는 실행 단위가 끝나고 나서 num 값이 하나 증가한다.

 

 

11. 관계연산자

· 관계연산자는 2개의 항을 비교하여 참인지 거짓인지 판별하는 연산자이다. 

· ~인가? 라는 질문으로 CPU에 저장되므로 돌아오는 값은 boolean 타입이다. (<, >, <=, >=, ==, !=)

 

12. 복합대입연산자 

· 복합대입연산자는 코드를 더욱 간결하게 사용이 가능하다. (+=, -=, *=, /=, %= 등등)

  ex) num += 5 는  num = num + 5 와 같은 의미

 

· ex)복합대입 연산자은 형변환이 필요하지 않다.

 

 

13. 아래와 같은 결과가 출력되는 이유를 설명하시오.

 

· 대입연산자는 결합 방향이 오른쪽에서 왼쪽으로 진행된다.

  따라서 위의 문장은 다음과 같다. num1 = (num2 = num3);

· num3이 30이므로 num2에 30이 대입된 후 다시 num1에 30이 되므로 모두 30이 저장된다.

 

 

 

'bitcamp > JAVA' 카테고리의 다른 글

반복문_연습문제  (0) 2021.01.03
반복문  (0) 2021.01.03
상수와 형변환  (0) 2021.01.03
자료형과 표현법  (0) 2021.01.03
주석과 변수  (0) 2021.01.03