"""
산술연산자       의미
    =           대입 연산자
    +              더하기
    -                빼기
    *               곱하기
    /               나누기
    //             나누기(몫)
★ %         나머지 구하기★
    **              제곱
"""
'''
num1=9;num2=2

print(num1,'+',num2,'=',num1+num2)
print(num1,'-',num2,'=',num1-num2)
print(num1,'*',num2,'=',num1*num2)
print(num1,'/',num2,'=',num1/num2)
print(num1,'//',num2,'=',num1//num2)
print(num1,'%',num2,'=',num1%num2)
print(num1,'**',num2,'=',num1**num2)
'''
"""
#관계연산자의 모든 자료형은 'bool'임
#모든 기준은 왼쪽에서 오른쪽
관계연산자              의미
    a<b                a가 b보다 작다
    a>b                a가 b보다 크다
    a<=b              a가 b보다 작거나 같다
    a>=b              a가 b보다 크거나 같다
    a == b            a와 b가   같으면 (True)
    a != b             a와 b가 다르면 (true)
"""
'''
S1=3.1;S2=3

print('S1>=S2 : %s'%(S1>=S2))
print('S1<=S2 : %s'%(S1<=S2))
print('S1==S2 : %s'%(S1==S2))
print('S1!=S2 : %s'%(S1!=S2))

print('S1>=S2 : %d'%(S1>=S2))
print('S1<=S2 : %d'%(S1<=S2))
print('S1==S2 : %d'%(S1==S2))
print('S1!=S2 : %d'%(S1!=S2))

print('S1>=S2 : %c'%(S1>=S2))
print('S1<=S2 : %c'%(S1<=S2))
print('S1==S2 : %c'%(S1==S2))
print('S1!=S2 : %c'%(S1!=S2))

print('S1>=S2 : %f'%(S1>=S2))
print('S1<=S2 : %f'%(S1<=S2))
print('S1==S2 : %f'%(S1==S2))
print('S1!=S2 : %f'%(S1!=S2))
'''
"""
# a 위치에는 무조건 변수만 가능 / b 에는 변수, 상수 다 가능
#연산해서 좌측에 대입

복합 대입 연산자               의미
    a += b                  a = a + b
    a -= b                   a = a - b
    a *= b                  a = a * b
    a /= b                  a = a / b
    기타 다 같게 적용
    
"""
'''
# 6 / 4 / 25 / 1 / 0 
S1 = S2 = 5 # 대입연산자는 우측이 최우선, 즉 5가 S2로 대입되고 S2 의 5저장위치가 S1로 대입됨
S1+=1
print('S1 + 1 = ',S1) # 5+1=6
S1-=1
print('S1 - 1 = ',S1) # 6-1=5
S1*=S2
print('S1 * S2 = ',S1) # 5*5=25
S1//=S2
print('S1 // S2 = ',S1) # 25//5=5
S1%=S2
print('S1 % S2 = ',S1) # 5%5=0
''''''
S1=5;S2=3
S1**=S2
print(S1,end= '  ');print(id(S1))
S1-=2
print(S1,end = '  ');print(id(S1))
print('S1 / 4 = ',S1/4)
print('S1 // 4 = ',S1//4)
print('S1 % 4 = ',S1%4)
'''
"""
#논리 연산자는 좌측부터 따짐 
논리 연산자           사용예                            의미
    and            (a>b)and(a<c)     a가 b보다 크고 a가 c보다 작으면 참    [ 참:1,거짓:3] #좌측항이 False면 우측항 무시
     or             (a>b) or (a<c)     a가 b보다 크거나 a가 c보다 작으면 참 [ 참:3,거짓;1] # 좌측항이 True면 우측항 무시
    not               not(a==b)               a 가 b보다 크면 거짓
"""
'''
print(0 or 0,':',False or False)
print(1 or 0,':',True or False)
print(0 or 1,':',False or True)
print(1 or 1,':',True or True)

print('not : ',not(0 or 0),':',not(False or False)) # not은 반환되는 기본값이 True 와 False이므로 0과1도 False와 True 변환됨
print('not : ',not(1 or 1),':',not(True or True)) 
''''''
a=20
b=10
print(0 or 0,':',False or (a+b)) # or 앞이 거짓일때는 뒤의 값 반환 (우선순위 때문)
print(1 or 0,':',True or (a+b))  # or 앞이 참일때는 뒤 무시
print(0 and 0,':',False and (a+b)) # and 앞이 거짓일때 뒤 값 무시
print(1 and 0,':',True and (a+b)) # and 앞이 값이 참일때 뒤 값 반환
'''
"""
논리 연산자     사용 예                의미
      |             a | b         a와b를 bit로 변환하여 OR 연산
      &            a&b         a와b를 bit로 변환하여 AND 연산
      ^            a^b          a와b를 bit로 변환하여 XOR 연산(베타적 논리합 : 같은 비트자리에 같은 숫자가 나오면 0, 다르면 1 처리)
      ~             ~a          a를 bit로 변환하여 연산( ~-7 -> 8 , ~8 -> -7)
      >>          a>>2        a를 bit로 변환하여 오른쪽으로 Shift
      <<          a<<2        a를 bit로 변환하여 왼쪽으로 Shift
"""




68df0e7a15d1a4ead7a1af30d032f3bbe98391a7
<mask token>

"""
산술연산자       의미
    =           대입 연산자
    +              더하기
    -                빼기
    *               곱하기
    /               나누기
    //             나누기(몫)
★ %         나머지 구하기★
    **              제곱
"""
'''
num1=9;num2=2

print(num1,'+',num2,'=',num1+num2)
print(num1,'-',num2,'=',num1-num2)
print(num1,'*',num2,'=',num1*num2)
print(num1,'/',num2,'=',num1/num2)
print(num1,'//',num2,'=',num1//num2)
print(num1,'%',num2,'=',num1%num2)
print(num1,'**',num2,'=',num1**num2)
'''
"""
#관계연산자의 모든 자료형은 'bool'임
#모든 기준은 왼쪽에서 오른쪽
관계연산자              의미
    a<b                a가 b보다 작다
    a>b                a가 b보다 크다
    a<=b              a가 b보다 작거나 같다
    a>=b              a가 b보다 크거나 같다
    a == b            a와 b가   같으면 (True)
    a != b             a와 b가 다르면 (true)
"""
'''
S1=3.1;S2=3

print('S1>=S2 : %s'%(S1>=S2))
print('S1<=S2 : %s'%(S1<=S2))
print('S1==S2 : %s'%(S1==S2))
print('S1!=S2 : %s'%(S1!=S2))

print('S1>=S2 : %d'%(S1>=S2))
print('S1<=S2 : %d'%(S1<=S2))
print('S1==S2 : %d'%(S1==S2))
print('S1!=S2 : %d'%(S1!=S2))

print('S1>=S2 : %c'%(S1>=S2))
print('S1<=S2 : %c'%(S1<=S2))
print('S1==S2 : %c'%(S1==S2))
print('S1!=S2 : %c'%(S1!=S2))

print('S1>=S2 : %f'%(S1>=S2))
print('S1<=S2 : %f'%(S1<=S2))
print('S1==S2 : %f'%(S1==S2))
print('S1!=S2 : %f'%(S1!=S2))
'''
"""
# a 위치에는 무조건 변수만 가능 / b 에는 변수, 상수 다 가능
#연산해서 좌측에 대입

복합 대입 연산자               의미
    a += b                  a = a + b
    a -= b                   a = a - b
    a *= b                  a = a * b
    a /= b                  a = a / b
    기타 다 같게 적용
    
"""
'''
# 6 / 4 / 25 / 1 / 0 
S1 = S2 = 5 # 대입연산자는 우측이 최우선, 즉 5가 S2로 대입되고 S2 의 5저장위치가 S1로 대입됨
S1+=1
print('S1 + 1 = ',S1) # 5+1=6
S1-=1
print('S1 - 1 = ',S1) # 6-1=5
S1*=S2
print('S1 * S2 = ',S1) # 5*5=25
S1//=S2
print('S1 // S2 = ',S1) # 25//5=5
S1%=S2
print('S1 % S2 = ',S1) # 5%5=0
''''''
S1=5;S2=3
S1**=S2
print(S1,end= '  ');print(id(S1))
S1-=2
print(S1,end = '  ');print(id(S1))
print('S1 / 4 = ',S1/4)
print('S1 // 4 = ',S1//4)
print('S1 % 4 = ',S1%4)
'''
"""
#논리 연산자는 좌측부터 따짐 
논리 연산자           사용예                            의미
    and            (a>b)and(a<c)     a가 b보다 크고 a가 c보다 작으면 참    [ 참:1,거짓:3] #좌측항이 False면 우측항 무시
     or             (a>b) or (a<c)     a가 b보다 크거나 a가 c보다 작으면 참 [ 참:3,거짓;1] # 좌측항이 True면 우측항 무시
    not               not(a==b)               a 가 b보다 크면 거짓
"""
'''
print(0 or 0,':',False or False)
print(1 or 0,':',True or False)
print(0 or 1,':',False or True)
print(1 or 1,':',True or True)

print('not : ',not(0 or 0),':',not(False or False)) # not은 반환되는 기본값이 True 와 False이므로 0과1도 False와 True 변환됨
print('not : ',not(1 or 1),':',not(True or True)) 
''''''
a=20
b=10
print(0 or 0,':',False or (a+b)) # or 앞이 거짓일때는 뒤의 값 반환 (우선순위 때문)
print(1 or 0,':',True or (a+b))  # or 앞이 참일때는 뒤 무시
print(0 and 0,':',False and (a+b)) # and 앞이 거짓일때 뒤 값 무시
print(1 and 0,':',True and (a+b)) # and 앞이 값이 참일때 뒤 값 반환
'''
"""
논리 연산자     사용 예                의미
      |             a | b         a와b를 bit로 변환하여 OR 연산
      &            a&b         a와b를 bit로 변환하여 AND 연산
      ^            a^b          a와b를 bit로 변환하여 XOR 연산(베타적 논리합 : 같은 비트자리에 같은 숫자가 나오면 0, 다르면 1 처리)
      ~             ~a          a를 bit로 변환하여 연산( ~-7 -> 8 , ~8 -> -7)
      >>          a>>2        a를 bit로 변환하여 오른쪽으로 Shift
      <<          a<<2        a를 bit로 변환하여 왼쪽으로 Shift
"""



