Advertisement
Guest User

Mathematica, 8-bit full adder

a guest
Apr 4th, 2021
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. Remove["Global`*"];
  2. n = 8;
  3. addbit[a_, b_, cin_] := {Xor[a, b, cin], Or[And[a, b], And[cin, Xor[a, b]]]}
  4. num2bool[a_] := If[NumberQ[a], Thread[IntegerDigits[a, 2, n] > 0], Array[a, n]]
  5. truth2int[a_] := FromDigits[Boole@a, 2]
  6. add[a_, b_] := With[{A = num2bool[a], B = num2bool[b]},
  7. Most@Reverse@
  8. FoldList[addbit[#2[[1]], #2[[2]], #1[[2]]] &, {False, False},
  9. Reverse@Transpose[{A, B}]]
  10. ][[All, 1]]
  11.  
  12. (* test it works *)
  13. truth2int@add[0, 0] == 0
  14. truth2int@add[1, 0] == 1
  15. truth2int@add[1, 1] == 2
  16. truth2int@add[5, 9] == 14
  17. truth2int@add[2^n - 1, 1] == 0
  18.  
  19. BooleanMinimize[add[x, y]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement