컴퓨터 공학에서 빼놓을 수 없는 것이 10진수, 16진수 ,2진수의 표현방법일 것이다.

특히 컴퓨터 입장에서 생각했을 때 

컴퓨터가 2진수로 데이터를 처리한다는 것은 널리 알려진 사실이다.

사람의 입장에서는 10진수로 모든 것을 보고 판단하고 있다.

하지만 프로그래밍을 하는 입장에서는 이런 다양한 표현방법을 알 필요가 있다.

 

10진수(Decimal)

10진수는 우리가 흔히 사용하는 표현법으로

0~9 사용!

0~9까지 사용하며 영어로는 Decimal이라고 한다.

232를 십진수로 자세한 공식으로 표현하면 아래와 같이 된다.

(10^0*v)+(10^1*v)+(10^2*v)

16진수 (Hex)

16진수는 

0~F 사용!

0123456789 ABCDEF 총 16가지인데

특히 주목할 부분은 ABCDEF 알파벳 대문자가 6가지 추가된다.

10부터 A로 표현되고

11 B

12 C

13 D

14 E

15 F

이런 식이다. 

계산법은

16진수를 10진수로 바꾸는 공식은 

예를 들어 3자리 12B이면 

각 자리수를 아스키 코드로 바꾸고 

각 자리수에 맞게 16제곱하여 아스키코드 값을 더해주면 된다.

(16^0*v)+(16^1*v)+(16^2*v)= decimal value 

12B -> 299

 

또 다른 계산하기 쉬운 방법은 10진수를 16으로 나누어서 역으로 올라가는 방식이다.

 

** 제일 중요한 16진수를 컴퓨터 공학에서 사용하는 이유는..???!!

바로바로 >>>

16진수는 2^4을 표현할 수 있기 때문이다.

 

 

  • 16진법을 2진법으로 바로 변환하려면 각 자릿수를 2진법으로 변환하면 된다.
    예를 들면 25FB16를 0010(2) 0101(5) 1111(F) 1011(B)처럼 끊어서 변환한 다음 전부 붙여주고 앞의 00을 떼준 뒤 100101111110112로 적으면 된다.
  • 반대로 2진법을 16진법으로 바로 변환하려면 1의 자리에서부터 4개씩 끊어서 16진법으로 변환해주면 된다.
    101110101010101010111101000102를 (000)1 0111 0101 0101 0101 0111 1010 0010로 끊어주고 각각 변환하면 175557A216이 된다.

8진수 (Octal)

0~7만 사용!

계산법은 10진수 및 16진수와 동일하고 8^ 형식으로 이어가면 된다.

2진수 (Binary)

0과 1만 사용!

10진수를 2진수로 표현하는 방법은 의외로 간단하다.

10진수의 값을 2로 나눠주면 된다.

몫이 0이 될때까지 나눠주고 나머지를 아래에서 위로 적어주면

2진수로 표현된다.

 

try~except로 예외 처리하기. 

 

my_list = [1,2,3]

try:
    print("첨자를 입력하세요.")
    index=int(input())
    print(my_list[index]/0)
except ZeroDivisionError as err:
    print("0으로 나눌 수 없습니다.({0})")

except IndexError as err:
    print("잘못된 첨자입니다.({0})".format(err))
  
finally:
    print("나는 마지막에 무조건 나온다.")
    
실행결과

2 입력 시

0으로 나눌 수 없습니다.(division by zero)
나는 마지막에 무조건 나온다.

5 입력 시 

잘못된 첨자입니다.(list index out of range)
나는 마지막에 무조건 나온다.

try는 말 그대로 실행구문이다.

except는 예외 발생 시 

실행되는 구문이다.

finally는 try 구문을 진행하던 except 구문을 진행하던

무조건 실행된다.

raise문은 try문 안에서 예외를 직접 일으킬 수 있다. 

여기서 중요한 점은 except는

 

Exception라는 기본으로 내장되어 있는 class를 사용한다는 것이다. 

Exception 안에 arithmeticError 안에 ZeroDivisionError 등이 있고,

Exception 안에 LookupError 안에 IndexError 등이 있다. 

 

except Exception as err:
	print("1. 예외가 발생하였습니다. ({0}).format(err))

except ZeroDivisionError as err:
	print("2. 0으로 나눌 수 없습니다. ({0}).format(err))
    
except IndexError as err:
	print("3. 잘못된 첨자입니다. ({0}).format(err))

 

실습 1

try:
    s=list(input())
    a=int(input("시작 지점 입력"))
    b=int(input("취할 갯수 입력"))
    
    if (b>len(s)):
        raise Exception("취할 갯수가 처음에 입력한 문자길이 보다 깁니다.")
    elif (a>len(s)):
        raise Exception("시작지점이 입력한 문자열 길이보다 큽니다.")
    elif (a<1 or b<1):
        raise Exception("시작 지점 또는 취할 갯수를 0보다 큰 값을 입력하세요.")
    else: 
        result= s[a-1:a-1+b]
        print(result)


except Exception as err:
    print("예외가 발생하였습니다.({0})".format(err))

else: 
    print("출력에 성공했습니다.")

finally:
    print("나는 마지막에 무조건 출력 됩니다.")

실습 2

class를 사용해서 try except 활용.

부모 클라스를 기본적으로 Exception으로 한다.

class startPointError(Exception):
    def __init__(self):
        super().__init__("시작지점이 입력한 문자열 길이보다 큽니다.")

class extractPointError(Exception):
        def __init__(self):
            super().__init__("취할 갯수가 처음에 입력한 문자길이 보다 깁니다.")

class smallerThanZero(Exception):
    def __init__(self):
        super().__init__("시작 지점 또는 취할 갯수를 0보다 큰 값을 입력하세요.")

try:
    s=list(input())
    a=int(input("시작 지점 입력"))
    b=int(input("취할 갯수 입력"))
    # midstr = s[a-1:len(s)]
    if (b>len(s)):
        raise extractPointError()
    elif (a>len(s)):
        raise startPointError()
    elif (a<1 or b<1):
        raise smallerThanZero()
    else: 
        result= s[a-1:a-1+b]
        print(result)

except Exception as err:
    print("예외가 발생하였습니다.({0})".format(err))

else: 
    print("출력에 성공했습니다.")

finally:
    print("나는 마지막에 무조건 출력 됩니다.")

Django 설치 및 개발환경 세팅 

윈도우 정리 잘 되어 있는 곳 

(점프투장고)

https://wikidocs.net/70588

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

 

맥 정리 잘 되어 있는 곳 

https://curryyou.tistory.com/140

 

[파이썬/장고] 맥(Mac) 파이썬 장고 가상환경 생성/설정

- Mac OS Python Django Virtual Environment Setting # 파이썬 가상환경이란? : 프로젝트 별로 따로 모듈 및 버전 관리를 할 수 있게 해주는 (가상의) 독립공간입니다. 그림의 맨 위 모습처럼, 프로젝트마다 각..

curryyou.tistory.com

 

+ Recent posts