답변:
내장 int
함수를 사용하여 입력 번호의 기본, 즉 2
이진수에 전달하십시오 .
>>> int('11111111', 2)
255
>>>
프롬프트에서 제안한대로 )에서는 전혀 사용할 필요가 없습니다 print
. OP의 가상의 예는 그렇지 않았습니다. 따라서 파이썬 2와 3에서 실제로 동일해야합니다.
base와 함께 int를 사용하는 것이 올바른 방법입니다. int가 기본을 차지하기 전에이 작업을 수행했습니다. 기본적으로 이진수를 십진수로 변환하는 기본 방식의 목록 이해에 적용되는 감소입니다 (예 : 110 = 2 ** 0 * 0 + 2 ** 1 * 1 + 2 ** 2 * 1).
add = lambda x,y : x + y
reduce(add, [int(x) * 2 ** y for x, y in zip(list(binstr), range(len(binstr) - 1, -1, -1))])
add = lambda x, y: x + y
, int.__add__
감소시키기 위해 제공 될 수 있습니다. 예 :reduce(int.__add__, ...)
무대 뒤에서 무슨 일이 일어나고 있는지 알고 싶다면 여기로 가십시오.
class Binary():
def __init__(self, binNumber):
self._binNumber = binNumber
self._binNumber = self._binNumber[::-1]
self._binNumber = list(self._binNumber)
self._x = [1]
self._count = 1
self._change = 2
self._amount = 0
print(self._ToNumber(self._binNumber))
def _ToNumber(self, number):
self._number = number
for i in range (1, len (self._number)):
self._total = self._count * self._change
self._count = self._total
self._x.append(self._count)
self._deep = zip(self._number, self._x)
for self._k, self._v in self._deep:
if self._k == '1':
self._amount += self._v
return self._amount
mo = Binary('101111110')
python3.6 이상을 사용하는 경우 f-string을 사용하여 변환을 수행 할 수 있습니다.
이진수를 십진수로 :
>>> print(f'{0b1011010:#0}')
90
>>> bin_2_decimal = int(f'{0b1011010:#0}')
>>> bin_2_decimal
90
이진수에서 8 진수로 등
>>> f'{0b1011010:#o}'
'0o132' # octal
>>> f'{0b1011010:#x}'
'0x5a' # hexadecimal
>>> f'{0b1011010:#0}'
'90' # decimal
콜론으로 분리 된 2 개의 정보에주의하십시오.
이런 식으로 콜론의 오른쪽을 변경하여 {binary, octal, 16 진수, decimal}을 {binary, octal, 16 진수, decimal}로 변환 할 수 있습니다.
:#b -> converts to binary
:#o -> converts to octal
:#x -> converts to hexadecimal
:#0 -> converts to decimal as above example
8 진수 / 16 진수 / 10 진수를 갖도록 콜론의 왼쪽을 변경해보십시오.
큰 행렬 (10 ** 5 행 이상)의 경우 벡터화 된 matmult를 사용하는 것이 좋습니다. 한 번에 모든 행과 열을 전달하십시오. 매우 빠릅니다. 파이썬에는 루핑이 없습니다. 원래 MovieLens의 10 가지 장르 열과 같은 0/1과 같은 많은 이진 열을 각 예제 행의 단일 정수로 변환하도록 설계했습니다.
def BitsToIntAFast(bits):
m,n = bits.shape
a = 2**np.arange(n)[::-1] # -1 reverses array of powers of 2 of same length as bits
return bits @ a