3. 연산자

 

3.1 산술 연산자


연산자

설명

+

덧셈

-

뺄셈

*

곱셈

**

거듭제곱

/

나눗셈

//

나눗셈의

%

나눗셈의 나머지

 

 

+ (덧셈)


숫자와 문자 구분 없이 두개의 객체를 더합니다.

>>> # (+) 덧셈

... # 숫자

... 10 + 20

30

>>> # 문자

... 'abcd' + 'efgh'

'abcdefgh'

 

 

 

- (뺄셈)


숫자에서 숫자를 뺍니다.

>>>  # - (뺄셈)

... 10 - 5

5

>>> 20.7 - 10.2

10.5

 

* (곱셈)


두 숫자를 곱하기 연상을 하고 문자인 경우 숫자만큼 반복 합니다.

>>> # * (곱셈)

... 2 * 3

6

>>> 'abc ' * 3

'abc abc abc '

 

 

** (거듭제곱)


숫자에 지수연산을 합니다.

>>> # ** (거듭제곱)

... 3 ** 3

27

>>> 3 * 3 * 3

27

 

/ (나눗셈)


두 수를 나눕니다정수로 표현 하려면 정수변환을 해야 합니다.

>>>  # / (나눗셈)

... 13 / 3

4.333333333333333

>>> 13.0 / 3

4.333333333333333

>>> a = 13/3

>>> print(a)

4.333333333333333

>>> print(int(a))

4

 

// (나눗셈의 몫)


나눗셈의 몫을 구하는 식을 사용 하는 경우 양의 수에만 사용하여야 합니다음의 수의 경우 원하는 결과와 다른 값을 얻을 수 있습니다그 이유는 몫을 구할 때 좌측에 가까운 정수를 가져오기 때문입니다.

>>> # (//) 나눗셈의 몫

... 13 // 3

4

>>> 13.0 // 3

4.0

>>> -13 // 3

-5

>>> -13.0 // 3

-5.0

>>> divmod(-13, 3)

(-5, 2)

>>> divmod(13, 3)

(4, 1)

>>> abs(-13.0) // 3

4.0

 

0을 기준으로 보았을 때 양의 수는 우측으로 커지고 4.3333의 좌측에 있는 정수는 4입니다.

0을 기준으로 보았을 때 음의 수는 좌측으로 커지고 -4.3333의 좌측에 있는 정수는 -5입니다.

목과 나머지를 구하는 이유는 몇번 나눌 수 있는가, 몇이 남는가 이기 때문에 절대값으로 계산을 하는게 정답입니다.

 

% (나머지)


나눗셈의 나머지 값을 구합니다.

>>> # % (나머지)

... 13 % 3

1

>>> 13.0 % 3

1.0

>>> abs(-13.0) % 3

1.0

 

python study

 


3.2 비교 연산자


True () 또는 False (거짓)의 반환 값을 구하는 연산자로 첫 글자는 대문자 입니다.

연산자

설명

작음

<=

작거나 같음

>=

크거나 같음

<> 

 

==

같음

!=

같지 않음

 

< (작음)


(x < y) : x y보다 작은지 여부를 반환합니다.

>>> # < (작음)

... 5 < 7

True

>>> 7 < 5

False

>>> 'a' < 'b'

True

>>> 'azzz' < 'b'

True

>>> 'b' < 'azzzz'

False

>>> 'b' < 'A'

False

>>> 'a' < 'Z'

False

>>> 'z' < 'A'

False

>>> 'a' < 'A'

False

>>> 'A' < 'a'

True

 

다음과 같이 여러 숫자와 문자에 대해 한꺼번에 비교 연산을 수행할 수 있습니다. 숫자와 문자 비교는 오류가 발생 합니다.

>>> 2 < 3 < 4 < 5

True

>>> 2 < 4 < 3 < 5

False

>>> 'A' < 'b' < 'C'

False

>>> 'A' < 'C' < 'b'

True

 

> ()


(x < y) : x y보다 작은지 여부를 반환합니다.

>>> # > ()

... 5 > 7

False

>>> 7 > 5

True

>>> 'a' > 'b'

False

>>> 'azzz' > 'b'

False

>>> 'b' > 'A'

True

>>> 'a' > 'Z'

True

>>> 'a' > 'A'

True

 

여러개 비교

>>> 5 > 4 > 3 > 2

True

>>> 'c' > 'b' > 'a'

True

>>> 'a' > 'Z' > 'A'

True

 

<= (작거나 같음)


(x <= y) : x y 보다 작거나 같은지 여부를 반환합니다.

<= 기호를 띄어쓰기 하면 오류가 발생 합니다.

>>> # <= (작거나 같음)

... x = 10

>>> y = 20

>>> x < = y

  File "<stdin>", line 1

    x < = y

        ^

SyntaxError: invalid syntax

>>> x <= y

True

 

>= (크거나 같음)


(x >= y) : x y 보다 크거나 같은지 여부를 반환합니다.

>>> # >= (크거나 같음)

... x = 10

>>> y = 20

>>> x >= y

False

>>> x = 'b'

>>> y = 'a'

>>> x >= y

True

 

== (같음)


(x == y) : x, y 두 객체가 같은지 여부를 반환합니다.

>>> # == (같음)

... x = 10

>>> y = 10

>>> x == y

True

>>> x = 'a'

>>> y = 'b'

>>> x == y

False

>>> x = 'aaa'

>>> y = 'aAa'

>>> x == y

False

 

!= (같지 않음)


(x != y) : x, y 두 객체가 같지 않은지 여부를 반환합니다.

>>> # != (같지 않음)

... x = 'aaa'

>>> y = 'aAa'

>>> x != y

True

>>> x = 10

>>> y = 100

>>> x != y

True

 

 

3.3 부울 연산자


연산자

수식

결과

and

True and True

True

True and False

False

False and False

False

or

True or True

True

True or False

True

False or False

False

not

not True

False

not False

True

 

and


(x and y) : xy가 모두 True인 경우에만 True 이고 둘중 하나 또는 둘다 False이면 False를 반환 합니다.

>>> # and

... True and True

True

>>> (3 == 3) and (7 ==7)

True

>>> True and False

False

>>> (3 == 3) and (7 == 8)

False

>>> False and False

False

>>> (3 == 4) and (7 == 8)

False

 

or


(x and y) : xy가 모두 False인 경우에만 False이고 둘 또는 하나만 True이어도 True를 반환합니다.

>>> # or

... True or True

True

>>> (3 == 3) or (7 == 7)

True

>>> True or False

True

>>> (3 == 3) or (7 == 8)

True

>>> False or False

False

>>> (3 == 4) or (7 == 8)

False

 

not


x True 이면 반대 값인 False 를 반환하고 x False 이면 반대 값인 True를 반환합니다.

>>> # not

... not True

False

>>> not (3 == 3)

False

>>> not False

True

>>> not (7 == 8)

True

 


3.4 비트 연산자

 

연산자

설명

<< 

왼쪽 시프트 연산자, 변수 값을 지정된 비트 만큼 좌측 이동

>> 

오른쪽 시프트 연산자, 변수 값을 지정된 비트 만큼 우측 이동

&

AND 연산자, 둘다 참인 경우 True

|

OR 연산자, 둘중 하나만 참이어도 True

^

XOR 연산자, 둘중 하나만 참이어야 True

~

반전 연산자, 참이면 False, 거짓이면 True

 

<< (왼쪽 시프트)


지정된 숫자에 대해 지정된 비트 수 만큼 왼쪽으로 시프트 연산을 진행 합니다비트가 상위로 올라가며 숫자가 커집니다.

5 << 2 : 5(0000 0101)2비트 좌측으로 이동하여 20(0001 0100)이 됩니다.

2 << 3 : 2(0010)를 왼쪽으로 3비트 시프트 하여 16(0001 0000)이 됩니다.

>>> # << (왼쪽 시프트)

... 5 << 2

20

>>> 2 << 3

16

 

>> (오른쪽 시프트)


지정된 숫자에 대해 지정된 비트 수 만큼 오른쪽으로 시프트 연산을 진행 합니다비트가 우측으로 이동 하면서 첫째 자리를 넘어가는 비트는 삭제가 되어 숫자가 작아집니다.

5 >> 2 : 5(0101)2비트 우측으로 이동하여 1(0001)이 됩니다.

54 >> 3 : 54(0011 0101)을 오른쪽으로 3비트 시프트 연산하여 6(0110)이 됩니다.

>>> # >> (오른쪽 시프트)

... 5 >> 2

1

>>> 54 >> 3

6

 

& (비트 AND 연산자)


(x & y) : x y에 대하여 각각의 자리수에 있는 비트에 대해 AND 연산을 진행 합니다각 자리수별 비트 값이 1인 경우에만 1이 되고 나머지는 0으로 처리합니다.

(1101) 13 &

(1010) 10

(1000) 8을 반환합니다. 1310의 자리수 별 비트 값이 모두 1인 부분만 제외하고 0이 됩니다.

>>> # & (비트 AND 연산자)

... 13 & 10

8

 

 

| (비트 OR 연산자)


(x & y) : x y에 대하여 각각의 자리수에 있는 비트에 대해 OR 연산을 진행 합니다각 자리수별 비트 값이 0인 경우에만 0이 되고 나머지는 1으로 처리합니다.

(1101) 13 |

(1010) 10

(1111) 15를 반환합니다. 1310의 자리수 별 비트 값이 하나라도 1이면 1로 됩니다.

>>> # | (비트 OR 연산자)

... 13 | 10

15

 

 

^ (비트 XOR 연산자)


(x & y) : x y에 대하여 각각의 자리수에 있는 비트에 대해 XOR 연산을 진행 합니다각 자리수 별 비트 값이 하나만 1인 경우에 1이 되고 나머지는 0으로 처리합니다.

 

(1101) 13 ^

(1010) 10

(0111) 7을 반환합니다. 1310의 자리수 별 비트 값중 하나만 1이면 1로 됩니다.

>>> # ^ (비트 XOR 연산자)

>>> 13 ^ 10

7

 

 

~ (비트 반전 연산자)


진정수에 사용하고 –( x + 1)으로 정의 된다고 Python document에 나와 있습니다.

The bitwise inversion of x is defined as -(x+1). It only applies to integral numbers.

보이는 숫자만 보면 안되고 데이터를 처리하는 단위(32, 64bit)로 나머지도 변경이 됩니다.

(1101) 13

000000000000000000000000000000000000000000000000000000000000(1101) 13

111111111111111111111111111111111111111111111111111111111111(0010) -14

 

>>> # ~ (비트 반전 연산자)

... ~13

-14

 

- copy coding - 


+ Recent posts