#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Chapitre 4 : Représentation des nombres

PCSI2 - LAS - Le Raincy
"""

##
def binaire(n:int) -> str:
    '''
    Renvoie une chaîne de caractères donnant la
    représentation binaire de n.
    Précondition : n > 0
    '''
    s = ''
    while n > 0:
        s = str(n%2) + s
        n = n//2
    return s

##
import numpy as np

a = np.uint32(2**31)
print('a = ', a, ' mais a+a = ', a+a)
b = np.uint8(2**8-1)
c = np.uint8(1)
print(b+c)


##
from time import time

debut = time()
n = 0
for i in range(1800):
    n = n * 2**i
print(time() - debut)

debut = time()
n = 2**180
for i in range(1800):
    n = n * 2**i
print(time() - debut)

##Exercice
def binaire_rec(n):
    if n==0:
        return '0'
    elif n==1:
        return '1'
    else:
        return binaire_rec(n//2) + str(n%2)

def complement(n,N):
    if n == 0:
        return '0'
    if n <0:
        n = n+2**N
    s = ''
    while n>0:
        s = str(n%2) + s
        n = n//2
    return s
