아직 numpy array 하는 법과

리스트에 입출력하는 것이 익숙지 않아서

미숙하지만

힘들게 만들어봤다.

 

-----------------------------------------------

파이썬은 C언어와 다르게 정수를 나누면 실수가 되어서

math.floor() : 소수점 버림    을 사용하였고

 

-> math를 사용안하고  num을 다 n으로 바꿔 

n//=2 로 나타내어도 된다.

 

수학적으로 2로 나눠지면 0

나눠지지않고 나머지가 1일 때를 

구분하여 2진법으로 표현하였다.

 

-----------------------------------------------

이부분은 0과 1로 표현했을 때  0001 0000 로 4자리씩 표현하기 위해  

가변적으로 앞에 0을 추가하고자 넣었다.

(1 0000 -> 0001 0000)

 

-----------------------------------------------

리스트에 0을 넣어 표현하여도 괜찮지만

numpy 모듈의 np.full(length, 0) 으로 간단하게 표현하고 싶어서 넣었다.

 

나눠서 0과 1을 추가하는 과정이 표현과 반대로 되어서

list(reversed(a)) 

를 사용하였고

 

0으로만 있는 배열(b)과 계산된 배열(a)의 간격을 조정하기 위해 

start = len(b) - len(a)

로 표현하였다.

 

가장 마지막 줄 

reshape를 사용한건

00010000을 0001 0000로 잘라내기 위해 

출력하기 좋은 형태로 만들어준 것이다.

 

-----------------------------------------------

위에서 reshape 한 배열을 4자리로 나눠 출력하고자 한 코드이다.

 

def ShowBit(n):
    a = []
    while n >= 1:
        num = math.floor(n)
        if num % 2 == 0:
            a.append(0)
        else:
            a.append(1)
        n /= 2

    for i in range(1, len(a)):
        if len(a) <= i * 4:
            length = i * 4
            break

    b = np.full(length, 0)
    start = len(b) - len(a)
    index = int(length / 4)
    b[start:] = list(reversed(a))
    four2 = b.reshape(index, 4)
   
    for i in range(index):
        for j in range(4):
            print(four2[i, j], end="")
        if i != index - 1:
            print(" ", end="")


ShowBit(256)

+ Recent posts