Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Remove["Global`*"];
- n = 8;
- addbit[a_, b_, cin_] := {Xor[a, b, cin], Or[And[a, b], And[cin, Xor[a, b]]]}
- num2bool[a_] := If[NumberQ[a], Thread[IntegerDigits[a, 2, n] > 0], Array[a, n]]
- truth2int[a_] := FromDigits[Boole@a, 2]
- add[a_, b_] := With[{A = num2bool[a], B = num2bool[b]},
- Most@Reverse@
- FoldList[addbit[#2[[1]], #2[[2]], #1[[2]]] &, {False, False},
- Reverse@Transpose[{A, B}]]
- ][[All, 1]]
- (* test it works *)
- truth2int@add[0, 0] == 0
- truth2int@add[1, 0] == 1
- truth2int@add[1, 1] == 2
- truth2int@add[5, 9] == 14
- truth2int@add[2^n - 1, 1] == 0
- BooleanMinimize[add[x, y]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement