진법 변환/비트 연산

Hojun Jeong·2022년 5월 8일
0

알고리즘

목록 보기
2/2
post-thumbnail

이번 시간에는 진법 변환, 비트 연산에 관하여 설명하겠습니다
재밌었는 점은 3년 전에 C언어를 배우던 중, ~13이 왜 -14인지 모르고 지나갔는데 그 이유를 알게되었다는 것입니다
그 이유는 좀 이따 설명하도록 하겠습니다😊

일단 진법 변환에 대한 설명을 하겠습니다:

컴퓨터는 2진수의 형태로 모든 데이터를 CRUD 합니다

🚄 진법 변환

bin() : 10진수 -> 2진수

  • return '0b1111'
    • 결과값은 그 진법의 요약 글자 한개를 0뒤에 넣어줌으로써 헷갈리지 않게합니다.

oct() : 10진수 -> 8진수

  • return '0o73'

hex() : 10진수 -> 16진수

  • return '0xe10'
    • 109 이와같이 10이후에 9가 등장하는것이 16진법은 가능합니다, 하지만 이대로 사용하면 10 9, 109 , 1 0 9 인지 구분을 할수 없습니다.
      그렇기 때문에 (10=a, 11=b, 12=c, 13=d, 14=e, 15=f)이와 같이 표시합니다

🚅 비트 연산

비트 연산을 한번에 표현해주는 코드를 만들어 보았습니다

m,n=map(int,input().split())
M,N=bin(m),bin(n)
print(f'{m}={M},{n}={N}')

print(f'{M} & {N} = {bin(m&n)}')
print(f'{M} | {N} = {bin(m|n)}')
print(f'{M} ^ {N} = {bin(m^n)}')
print(f'~{N} = {bin(~n)}')
print(f'{M} >> 2 = {bin(m>>2)}')

실행결과

4 5
0b100 0b101
0b100 & 0b101 = 0b100
0b100 | 0b101 = 0b101
0b100 ^ 0b101 = 0b1
~0b101 = -0b110
0b100 >> 2 = 0b1

&

  • and

|

  • or

^

  • xor

~

  • not
  • 부호까지 바꿔준다는 개념을 생각해야 함

>> , <<

  • shift
profile
Student , Junior Developer

0개의 댓글