from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit from qiskit import Aer, execute from qiskit.tools.visualization import plot_histogram # Half adder # input qubits: a, b # output qubits: s (sum) and cout (carry-out) def halfadd(circ, a, b, s, cout) : circ.cx(a, s) circ.cx(b, s) circ.ccx(a, b, cout) # Create registers and circuit a = QuantumRegister(1, 'a') # input b = QuantumRegister(1, 'b') s = QuantumRegister(2, 'out') # output qc = QuantumCircuit(a,b,s) # Build a circuit that initializes the input bits to a full superposition # Calls the adder function and then measures the output register qc.h(a) qc.h(b) qc.barrier() halfadd(qc, a, b, s[0], s[1]) qc.barrier() m = ClassicalRegister(2, 'sum') qc.add_register(m) qc.measure(s,m) # Simulate and show results backend = Aer.get_backend('qasm_simulator') job = execute(qc, backend, shots=4096) # shots default = 1024 result = job.result() print(result.get_counts()) qc.draw(output='mpl') plot_histogram(result.get_counts())