본문 바로가기
PROGRAMING📚/Python📑

Python - Operator(연산)

Ta이니 2024. 11. 22.
728x90
반응형

Operator(연산)

print("{0:=^30}".format(' 1. 사칙 연산자 '))
print("Quiz) 10을 3으로 나누었을 때 몫과 나머지를 구하시오")
print(int(10 / 3), 10 % 3)
print("몫: %d, 나머지: %d " % (10 // 3, 10 % 3))
print("몫: {}, 나머지: {} ".format(10 // 3, 10 % 3))
print("10의 3승: {}".format(10 ** 3))

========= 1. 사칙 연산자 ==========
Quiz) 10을 3으로 나누었을 때 몫과 나머지를 구하시오
3 1
몫: 3, 나머지: 1
몫: 3, 나머지: 1
10의 3승: 1000

https://coding-factory.tistory.com/653

보수란

보수는 보충을 해주는 수를 의미합니다. 현재의 숫자에서 자릿수가 1단계 올라갈 수 있는 수가 몇인지를 구하시면 됩니다.

보수 구하기 예시

10진수

1의 보수 : 1+9=10 -> 1의 보수 = 9

3의 보수 : 3+7=10 -> 3의 보수 = 7

2진수

1₂의 보수 : 1₂+ 1₂=10₂ -> 1₂의 보수 = 1₂

10₂의 보수 : 1001₂+0111₂=11110₂ -> 1001₂의 보수 = 0111₂

컴퓨터에서 보수가 필요한 이유

컴퓨터는 이진수만 이해할 수 있습니다. 그렇다면 음수는 어떻게 표현할 수 있을까요? 음수를 표현하기 위해 보수가 사용됩니다. 컴퓨터에서 보수는 양수를 음수화로 표현하기 위한 방법이 됩니다. 즉, 보충하는 수. 양수에 대한 보수가 음수입니다. 컴퓨터의 CPU는 뺄셈도 모두 덧셈으로 처리한다는 것을 알고 계실 겁니다. 보수를 사용하게 되면 5-5=0의 과정을 컴퓨터는 5+(-5)=0으로 표현되게 되는것입니다.

!https://blog.kakaocdn.net/dn/nZdOw/btqTPyB7WgV/Fl3DXMRqmGY9SoxQmqOk9K/img.png

위의 그림을 보시면 이해가 되실 겁니다. 0001₂ + 와 그의 보수인 1111₂ 을 더했더니 10000₂ 이 된 것을 보실 수 있으실 겁니다. 여기서 최상위 비트인 1을 날려버리게 되면 0이 되는 것입니다.

보수 계산법

1의 보수 구하기

!https://blog.kakaocdn.net/dn/doC8Mn/btqTF2kIaqN/8qiF9omh1OqKwhPNmh5H5k/img.png

십진수로는 7이고 이진수로는 00000111₂ 의 보수를 구하는 과정입니다. 1의 보수를 구하는 방법은 굉장히 간단합니다. 1을 0으로 0을 1로 NOT연산을 해주시면 됩니다.

2의 보수 구하기

!https://blog.kakaocdn.net/dn/k38Q1/btqTPzugZHG/IeG69KiKo7foEPgikgodyk/img.png

2의 보수를 구하려면 앞서 구했던 1의 보수에 1을 더해주시면 됩니다.

2의 보수가 음수인 이유

!https://blog.kakaocdn.net/dn/u67Rr/btqTF3KJLfH/QsrCMUs0y1idV5iPQzTSsk/img.png

보수를 구했던 대상인 00000111₂ 과 의 2의 보수인 11111001₂를 더했더니 100000000₂이 나왔습니다. 여기서 최상위 부호를 제외하니 0이 되죠. 즉 00000111₂ + 11111001₂ = 0이 되었습니다. 위의 연산은 00000111₂+ (-00000111₂) 연산이 되었다고 할 수 있습니다. 즉 00000111₂의 2의보수가 00000111₂의 음수가 되는 것입니다.

비트 연산자

print("{0:=^20}".format(' 2. 비트 연산자 '))
print(0b1010 & 0b1100)
print(bin(0b1010 & 0b1100))
print(bin(0b1010 | 0b1100))
print(bin(0b1010 ^ 0b1100))
print(bin(~0b1010)) # 2의 보수로 출력

==== 2. 비트 연산자 =====
8
0b1000
0b1110
0b110
-0b1011

대입 연산자

print("{0:=^30}".format('3. 대입 연산자'))
tot = 0
for i in range(1,10,1): #끝 자리는 미포함
  tot += i
print("합 : {}".format(tot))

==========3. 대입 연산자===========
합 : 45

For 반복문(초기값, 조건, 증감)

for i in range(1,11):
    print("%d // %d = %d" % (tot, i, tot // i))

45 // 1 = 45
45 // 2 = 22
45 // 3 = 15
45 // 4 = 11
45 // 5 = 9
45 // 6 = 7
45 // 7 = 6
45 // 8 = 5
45 // 9 = 5
45 // 10 = 4

for i in range(1,11):
  print("%d %% %d = %d"%(tot, i, tot%i))

45 % 1 = 0
45 % 2 = 1
45 % 3 = 0
45 % 4 = 1
45 % 5 = 0
45 % 6 = 3
45 % 7 = 3
45 % 8 = 5
45 % 9 = 0
45 % 10 = 5

비교연산자

논리연산자

print("{0:=^20}".format(' 5. 논리 연산자 (and, or, not) '))
print(not (1 > 2) and (4 > 3))

==========5. 논리 연산자===========
True

삼항 연산자가 없다

print("{0:=^20}".format('6. 삼항 연산자가 없다. 대신에'))
a = 1
a = 10 if a > 5 else 5
print(a)

=6. 삼항 연산자가 없다. 대신에=
5

문자열 연산자

print("{0:=^20}".format('7. 문자열 연산자 +, *'))
a = "hello"; b = "world"; c = 10
print(a+b+str(c))
print("{} {} {}".format(a,b,c))
print("%s %s %d"%(a,b,c))
print(f'{a} {b} {c}')
print("="*10)

==7. 문자열 연산자 +, *===
helloworld10
hello world 10
hello world 10
hello world 10

==========

a='A'
print("ascii(%s), str(%s) of Ascii Code is %d"
      % (ascii(a), str(a), ord('A')))

a=65
print("ascii(%s), str(%s) , chr(%s) of Ascii Code is %d"
      %(ascii(a), str(a), chr(a), ord('A')))

ascii('A'), str(A) of Ascii Code is 65
ascii(65), str(65) , chr(A) of Ascii Code is 65

print("Hello Python"[0]) # 앞에서 0번째
print("Hello Python"[-2]) # 뒤에서 두번째
print("Hello Python"[0:12:2]) #0부터 12까지 2씩 증가하면서 출력

H
o
HloPto

728x90
반응형

'PROGRAMING📚 > Python📑' 카테고리의 다른 글

[Python] 리스트 List  (0) 2024.11.24
[Python]반복문 roof  (0) 2024.11.23
[Python]condition - 조건문  (0) 2024.11.16
[Python]constant  (1) 2024.11.14
[Python]Variable[ 자료형 ]  (0) 2024.11.13

댓글