Notice
Recent Posts
Recent Comments
05-18 00:26
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

Computer Language - Basic Operators 본문

Programming Language/Java

Computer Language - Basic Operators

알 수 없는 사용자 2023. 3. 22. 04:31

 수식을 프로그래밍언어에서는 expression이라고 부르고, 그안에는 operands(피연산자)와 operators(연산자)가 있다.

Priority Operator Associativity Operand Description
1 []
.
++
--
+, -
~
!
new
(type)
All
Reference
Integer, Float-point
Integer, Float-point
Integer, Float-point
Integer
Boolean
Reference
All
배열 요소 지정
객체 멤버 지정
값 증가
값 감소
부호에 사용
비트Bit 반전
논리Boolean 반전
객체 생성
(Casting) 형 변환 연산자
2 +, /, % Integer, Float-point 산술 계산
3 +, -
+
Integer, Float-point
String
산술 계산
String Concatenation
4 <<
>>
>>>
Integer 비트 연산
5 <, <=, =>, >
instanceof
Integer, Float-point
Reference
값의 대소 비교
객체 타입 비교
6 ==
!=
==
!=
Primitive
Primitive
Reference
Reference
비교 연산자
7 &
&
Integer
Boolean
bit AND
Boolean AND
8 ^
^
Integer
Boolean
bit XOR
logic XOR
9 |
|
Integer
Boolean
bit OR
Boolean OR
10 && Boolean Boolean AND
11 || Boolean Boolean OR
12 ? : All Ternary Operator
13 =
+=, -=, %=, /=, *=, ...
All Assignment Operators

 주의 깊게 볼 것은 모든 Boolean, Bit 관련 연산자는 기본적으로 우리가 알고 있는 산술 연산보다 나중에 일어난다는 것이고, AND, XOR, OR 순으로 무조건 연산 순서가 진행되며, 비교연산에 있어서 기본형 타입이 먼저 일어난다. 그외에도 중요하게 알아야 할 부분은 밑에 적어놓았다.

  • Boolean, Bit 연산자는 기본적인 산술 연산보다 나중에 일어남
  • AND, XOR, OR 순으로 연산 순서가 진행됨
  • Primitive 타입이 먼저 일어남
  • postfix, prefix등의 부호나 ~, !, new, ., [] 등은 casting 보다 먼저 일어나게 된다.

 

Bit & Shift

 기본적으로 모든 데이터는 0, 1로 저장된다. 숫자들은 2진수로 표현될 수 있고, 여기서 각각의 자리수에 따른 AND, XOR, OR 연산을 수행할 수 있다. 하지만 파이썬에서는 이런 연산들이 있지만, <<나 >>, >>> 연산은 조금 생소할 수 있을 것 같아 다뤘다.

Operator Description
x << n  비트를 ← 로 n만큼 땡기고, 밀어진 부분은 잘리며, 생기는 부분은 0으로 채워진다.
x >> n  비트를 → 로 n만큼 땡기고, 밀어진 부분은 잘리며, 생기는 부분은 MSB를 따라서 복제된다.
x >>> n  비트를 → 로 n만큼 땡기고, 밀어진 부분은 잘리며, 생기는 부분은 0으로만 채워진다.

 

Postfix Operator

 x++, x-- 등의 뒤에 붙는 것을 Postfix Operator라고 한다. 이때, 연산은 우선순위가 높지만, return은 연산되기 이전이 연산되기 때문에 programmer 입장에서는 실제로 연산이 안된거 아닌가 라고 생각할 수 있다. 하지만, 그건 착각이다. 실제로 헷갈리는 다음 코드를 보자

int x=10;

x += x++;
System.out.println(x);// What is the result of x?

 x에는 실제로 어떤 값이 들어갈까? x++가 먼저 되니깐 11이며 11과 11을 더한 것이니 22 아닐까 라는 생각을 할 수도 있다. 하지만 실제로 출력해보면 IntelliJ java 11버전 기준으로 20이 저장되어 있다. 이는 설명하기가 매우 난해하며, 해당 코드를 실무에서 볼 일은 아예 없으니 안심해도 될 것이다. 이에 대한 설명으로 다음 링크를 붙인다

https://blog.naver.com/ruvendix/220897091153

 

C언어 정리하기 - 전위 후위 증감 연산자

이번 내용을 시작하기 전에안녕하세요 루벤딕스입니다. 저번 포스팅에서는 복합 할당 연산자를 알아봤었어...

blog.naver.com

 

Ternary operator

(조건) ? (참 반환 값) : (거짓 반환 값) 으로 실행되며, 조건에 따라 값이 달라진다. 이는 단순한 반복문이라고 생각해도 된다. 하지만 너무 중첩시켜서 사용하면 가독성이 떨어지니 매우 간단한 값 할당에만 사용하기를 바란다.

Comments