math / modules /twos_complement.py
Sina Media Lab
Updates
984a89c
raw
history blame
1.14 kB
import random
def generate_question():
binary_number = bin(random.randint(1, 15))[2:].zfill(4)
def twos_complement(binary_str):
n = len(binary_str)
ones_complement = ''.join('1' if bit == '0' else '0' for bit in binary_str)
twos_complement_result = bin(int(ones_complement, 2) + 1)[2:].zfill(n)
return twos_complement_result[-n:]
correct_answer = twos_complement(binary_number)
steps = [
f"Start with the binary number: {binary_number}.",
f"Find the 1's complement by flipping each bit: {''.join('1' if bit == '0' else '0' for bit in binary_number)}.",
f"Add 1 to the 1's complement to get the 2's complement: {correct_answer}.",
]
question_data = {
"question": f"What is the 2's complement of the binary number {binary_number}?",
"options": [correct_answer] + [bin(random.randint(1, 15))[2:].zfill(4) for _ in range(3)],
"correct_answer": correct_answer,
"explanation": f"The 2's complement of the binary number {binary_number} is {correct_answer}.",
"step_by_step_solution": steps
}
return question_data