본문 바로가기
language/python

비트 연산, 실수의 오류 해결

by abstract.jiin 2022. 5. 6.

비트의 쓰임

    1) RGB 컬러

RGB
888
각 255씩 표현 / 8비트 : 0~255

FFF (가장 높은 것)
000 (가장 낮은 것)

색상의 보색 ! 색상 번호 앞에 ~(NOT) 붙이면 보색 ((신기해!!))

    2) IP

192.168.10.11
A   B   C   D
8   8   8   8
A,B,D에는 0, C에는 11111을 넣고 논리 곱을 한다. 
>>> 원하는 아이피를 알아낸다 >> 해킹!

비트를 미는게 
쉬프트 연산자
C를 오른쪽으로 8칸 밀고 싶을 때 
C>>8


비트 연산 


        논리 연산자
        & 논리 곱
        | 논리 합
        ^ 배타논리합

        단항 연산자
        ~ 논리 부정

        쉬프트 연산자
        >> A>>B A를 오른쪽으로 B만큼 비트 이동
        <<   A<<B A를 왼쪽으로 B만큼 비트 이동


비트가 넘어가면 잘리고, 빈 자리는 0으로 채워진다(음수는 빈 자리가 1로 채워진다)

10 : 1010

10<< 1
20


실수의 오류 

print(0.1 + 0.2)
print(0.1 + 0.2 == 0.3) 

print("%f" %0.3)
print("%.1f" %0.3)

실행결과  

더보기

0.30000000000000004
False
0.300000
0.3

0.1과 0.2를 더했는데 0.3보다 더 큰 수가 나온다. 

그래서 0.1과 0.2를 더한 값과 0.3이 같이 않다는 결과가 나온다. 

 

이 부분을 오류 수정 하기 위해서 

 

두 가지 방법이 있다. (math 와 decimal)

import math

print(math.isclose(0.1+0.2, 0.3))
from decimal import Decimal

print(float(Decimal('0.1') + Decimal('0.2')))

 

'language > python' 카테고리의 다른 글

if문  (0) 2022.05.06
삼항 연산자  (0) 2022.05.06
day8 - 비트 연산  (0) 2022.05.05
연산자  (0) 2022.05.04
암호화, 복호화, 입력함수  (0) 2022.05.03