[Python] 비트 쉬프트 연산 <<, >>

2021. 4. 8. 19:21·Python
728x90

정수 1개를 입력받아 2배 곱해 출력해보자.

a = int(input())
print(a << 1) # a * 2¹

정수를 2배로 곱하거나 나누어 계산해 주는 비트단위시프트연산자 <<, >>를 이용할 수 있다.
컴퓨터 내부에는 2진수 형태로 값들이 저장되기 때문에,
2진수 형태로 저장되어 있는 값들을 왼쪽(<<)이나 오른쪽(>>)으로
지정한 비트 수만큼 밀어주면 2배씩 늘어나거나 1/2로 줄어드는데,

왼쪽 비트시프트(<<)가 될 때에는 오른쪽에 0이 주어진 개수만큼 추가되고,
오른쪽 비트시프트(>>)가 될 때에는 왼쪽에 0(0 또는 양의 정수인 경우)이나 1(음의 정수인 경우)이 개수만큼 추가되고,
가장 오른쪽에 있는 1비트는 사라진다.

예시

n = 10
print(n<<1)  #10을 2배 한 값인 20 이 출력된다.
print(n>>1)  #10을 반으로 나눈 값인 5 가 출력된다.
print(n<<2)  #10을 4배 한 값인 40 이 출력된다.
print(n>>2)  #10을 반으로 나눈 후 다시 반으로 나눈 값인 2 가 출력된다.

정수 10의 2진수 표현은 ... 1010 이다.
10 << 1 을 계산하면 ... 10100 이 된다 이 값은 10진수로 20이다.
10 >> 1 을 계산하면 ... 101 이 된다. 이 값은 10진수로 5이다.

n = 10 과 같이 키보드로 입력받지 않고 직접 작성해 넣은 코드에서, 숫자로 시작하는 단어(식별자, identifier)는 자동으로 수로 인식된다.  

n = 10 에서 10 은 10진수 정수 값으로 인식된다.
변수 n 에 문자열을 저장하고 싶다면, n = "10" 또는 n = '10'으로 작성해 넣으면 되고,

 

n = 10.0 으로 작성해 넣으면 자동으로 실수 값으로 저장된다.
n = 0o10 으로 작성해 넣으면 8진수(octal) 10으로 인식되어 10진수 값 8이 저장되고,
n = 0xf 나 n = 0XF 으로 작성해 넣으면 16진수(hexadecimal) F로 인식되어 10진수 값 15으로 저장된다.

** python에서 실수 값에 대한 비트시프트 연산은 허용되지 않고 오류가 발생한다.
(실수 값도 컴퓨터 내부적으로는 2진수 형태로 저장되고 비트시프트 처리가 될 수 있지만, python 에서는 허용하지 않는다.)

 

정수 2개(a, n)를 입력받아 a를 2ⁿ배 곱한 값으로 출력해보자.

정수 2개(a, n)가 공백을 두고 입력된다.

a 를 2ⁿ배 만큼 곱한 값을 출력한다.

a, n = input().split()
print(int(a) << int(n))	# a * 2ⁿ

 

 

 

출처 : codeup.kr/

728x90
저작자표시 비영리 동일조건 (새창열림)

'Python' 카테고리의 다른 글

[Python] Boolean 참/거짓  (1) 2021.04.13
[Python] 실수 소수점 이하 반올림해서 출력하기  (0) 2021.04.08
[Python] 문자열 포맷 코드, 포맷팅 예시  (0) 2021.04.07
[Python] 스택 / 큐  (0) 2021.04.06
[Python] 문자열 (String)  (0) 2021.03.29
'Python' 카테고리의 다른 글
  • [Python] Boolean 참/거짓
  • [Python] 실수 소수점 이하 반올림해서 출력하기
  • [Python] 문자열 포맷 코드, 포맷팅 예시
  • [Python] 스택 / 큐
heestory217
heestory217
Done is better than Perfect! 좌충우돌 개발일지💻
    250x250
  • heestory217
    Heello World
    heestory217
  • 전체
    오늘
    어제
    • 분류 전체보기 (120)
      • 컴퓨터일반 (0)
      • WEB (1)
      • JAVA (3)
      • Python (9)
      • C (1)
      • DataBase (17)
        • Oracle (2)
        • MySQL (9)
        • SAP HANA (4)
        • PostgreSQL (0)
      • 디버깅∕오류해결 (14)
      • 코딩테스트 (54)
        • 자료구조∕알고리즘 (3)
      • 정보처리기사 (10)
      • Git∕GitHub (7)
      • 기타 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    HashMap
    Guava library
    배열 정렬하기
    Sort a HashMap in Java
    파이썬 포맷팅
    정처기 수제비
    leetcode
    hashmap sort
    MySQL
    정처기 수제비 데일리 문제
    인텔리제이
    treemap
    IntelliJ
    정처기 실기
    프로그래머스 카카오
    코딩테스트
    정처기 실기 예상문제
    SAP HANA Studio
    정처기 수제비 실기문제
    treeset
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
heestory217
[Python] 비트 쉬프트 연산 <<, >>
상단으로

티스토리툴바