sumator 2 bitowy

0

Witajcie, jestem dość początkującym uczniem python'a, mam za zadanie napisać sumator 2 bitowy. Na razie mam takie cuś:

def sum(a,b,c):
  s = (bool(a)!=bool(b))
  ss = (s!=bool(c))
  pp = (a or b) and (s or p)
  return[pp, ss]

Mam go ulepszyć tak by dodawał dwie listy wartości logicznych (liczby) o dowolnych długościach i zwracał sumę. Nawet nie wiem jak się za to zabrać i czy to jest w ogóle możliwe z tym co jest w funkcji. Może po prostu zbyt mało wiem i muszę coś doczytać. Prosiłbym o jakąś wskazówkę :D

Z góry dziękuje za pomoc

0

a,b to rozumiem są 2 bity (np. 0 i 1). A czym jest c? Przeniesienie/carry? a i b to int (0, 1) czy stringi? ('1', '0')

Jak inty to można tak:

def sum(a, b, carry):
    sum = a+b+carry
    return sum&1, (sum>>1)&1

Na pierwszej pozycji zwracamy wynik dodawania a na drugiej przeniesienie. W odniesieniu do dodawaniu listy wartości logicznych (typu [1,0,0..]). Zakładam, że elementy listy są od najmniej do najbardziej znaczących bitów:

import itertools

carry = 0
bit_sum = []
for a, b in itertools.zip_longest(bit_list1, bit_list2, fillvalue=0):
    result, carry = sum(a, b, carry)
    bit_sum.append(result)
if carry!=0:
    bit_sum.append(1)

1 użytkowników online, w tym zalogowanych: 0, gości: 1