IT Share you

파이썬에서 숫자의 비트 표현 인쇄

shareyou 2021. 1. 6. 08:10
반응형

파이썬에서 숫자의 비트 표현 인쇄


비트 자체에서 수행되는 모든 작업을 볼 수 있도록 숫자의 비트 표현을 콘솔에 인쇄하고 싶습니다.

파이썬에서 어떻게 할 수 있습니까?


이런거?

>>> ord('a')
97
>>> hex(ord('a'))
'0x61'
>>> bin(ord('a'))
'0b1100001'

Python 2.6 이상 :

print bin(123)

결과 :

0b1111011

파이썬 2.x에서

>>> binary = lambda n: n>0 and [n&1]+binary(n>>1) or []
>>> binary(123)
[1, 1, 0, 1, 1, 1, 1]

참고 : http://mail.python.org/pipermail/python-list/2003-December/240914.html의 "Mark Dufour"에서 가져온 예


Python 2.6 에서 -string.format 메서드 사용 :

"{0:b}".format(0x1234)

특히 패딩을 사용하여 서로 다른 숫자의 여러 인쇄물이 여전히 정렬되도록 할 수 있습니다.

"{0:16b}".format(0x1234)

공백이 아닌 선행 0으로 패딩을 남깁니다.

"{0:016b}".format(0x1234)

파이썬 3.6에서 -와 F-문자열 :

f- 문자열을 사용하는 동일한 세 가지 예는 다음과 같습니다.

f"{0x1234:b}"
f"{0x1234:16b}"
f"{0x1234:016b}"

bin기능


주제에서 약간 벗어 났지만 도움이 될 수 있습니다. 더 나은 사용자 친화적 인 인쇄를 위해 사용자 정의 인쇄 기능을 사용하고 더 나은 가독성을 위해 표현 문자 및 그룹 간격을 정의합니다. 다음은 목록 / 배열 및 그룹 너비를 취하는 함수의 예입니다.

def bprint(A, grp):
    for x in A:
        brp = "{:08b}".format(x)
        L=[]
        for i,b in enumerate(brp):
            if b=="1":
                L.append("k")
            else: 
                L.append("-")
            if (i+1)%grp ==0 :
                L.append(" ")

        print "".join(L) 

#run
A = [0,1,2,127,128,255]
bprint (A,4)

산출:

---- ----
---- ---k
---- --k-
-kkk kkkk
k--- ----
kkkk kkkk

참조 URL : https://stackoverflow.com/questions/1054116/printing-bit-representation-of-numbers-in-python

반응형