mirror of
https://github.com/BreizhHardware/py_A2.git
synced 2026-01-18 16:47:38 +01:00
Tp nombres entiers
This commit is contained in:
65
TP nombre entier/main.py
Normal file
65
TP nombre entier/main.py
Normal file
@@ -0,0 +1,65 @@
|
||||
from sys import argv as args
|
||||
from tp_nombres_entiers import *
|
||||
|
||||
def is_equal(a, b):
|
||||
return a == b
|
||||
|
||||
def __main__():
|
||||
if len(args) == 2:
|
||||
if args[1] == "tp_nombres_entiers":
|
||||
print("=======================binary_to_int=======================")
|
||||
print(binary_to_int('11'))
|
||||
print(binary_to_int('101010'))
|
||||
print("=======================get_nb_bits=======================")
|
||||
print(get_nb_bits(3))
|
||||
print(get_nb_bits(32))
|
||||
print("=======================int_to_bits=======================")
|
||||
print(int_to_bits(3))
|
||||
print(int_to_bits(32))
|
||||
print("=======================initialisation en binaire=======================")
|
||||
i = 42
|
||||
j = 0b101010
|
||||
print(i)
|
||||
print(j)
|
||||
print(is_equal(i, j))
|
||||
print("=======================masque=======================")
|
||||
i = 183
|
||||
mask = 0b10010001
|
||||
j = i & mask
|
||||
print(j)
|
||||
print("=======================positive_or_negative_4_bytes_int_to_bits=======================")
|
||||
print(positive_or_negative_4_bytes_int_to_bits(0))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(1))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(2))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(3))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(4))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(5))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(6))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(7))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(-1))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(-2))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(-3))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(-4))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(-5))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(-6))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(-7))
|
||||
print(positive_or_negative_4_bytes_int_to_bits(-8))
|
||||
print("=======================get_bits=======================")
|
||||
print(get_bits('10110', 1))
|
||||
print(get_bits('10110', 2))
|
||||
print(get_bits('10110', 3))
|
||||
print(get_bits('10110', 4))
|
||||
print(get_bits('10110', 5))
|
||||
print(get_bits('10110', 6))
|
||||
print("=======================add=======================")
|
||||
print(add('010101', '100111'))
|
||||
print(add('1', '1'))
|
||||
else:
|
||||
print("Usage: python main.py <nombre>")
|
||||
return
|
||||
else:
|
||||
print("Usage: python main.py <nombre>")
|
||||
return
|
||||
|
||||
if __name__ == "__main__":
|
||||
__main__()
|
||||
55
TP nombre entier/tp_nombres_entiers.py
Normal file
55
TP nombre entier/tp_nombres_entiers.py
Normal file
@@ -0,0 +1,55 @@
|
||||
def binary_to_int(b):
|
||||
n = 0
|
||||
for i in range(len(b)):
|
||||
n = n * 2 + int(b[i])
|
||||
return n
|
||||
|
||||
|
||||
def get_nb_bits(i):
|
||||
n = 0
|
||||
while 2 ** n <= i:
|
||||
n += 1
|
||||
return n
|
||||
|
||||
|
||||
def int_to_bits(i):
|
||||
b = ""
|
||||
while i > 0:
|
||||
b = str(i % 2) + b
|
||||
i = i // 2
|
||||
return b
|
||||
|
||||
|
||||
def positive_or_negative_4_bytes_int_to_bits(i):
|
||||
if i < 0:
|
||||
i = 2 ** 32 + i
|
||||
b = ""
|
||||
while i > 0:
|
||||
b = str(i % 2) + b
|
||||
i = i // 2
|
||||
b = "0" * (4 - len(b)) + b
|
||||
return b
|
||||
|
||||
|
||||
def get_bits(b, i):
|
||||
if i <= len(b):
|
||||
return int(b[len(b) - i])
|
||||
else:
|
||||
return 0
|
||||
|
||||
|
||||
def add(b1, b2):
|
||||
n = max(len(b1), len(b2))
|
||||
b1 = "0" * (n - len(b1)) + b1
|
||||
b2 = "0" * (n - len(b2)) + b2
|
||||
retenue = 0
|
||||
somme = ""
|
||||
for i in range(n - 1, -1, -1):
|
||||
s = int(b1[i]) + int(b2[i]) + retenue
|
||||
somme = str(s % 2) + somme
|
||||
retenue = s // 2
|
||||
if retenue > 0:
|
||||
somme = "1" + somme
|
||||
return somme
|
||||
|
||||
|
||||
Reference in New Issue
Block a user