|
import random |
|
|
|
title = "Subtraction in Base 2 Using 2's Complement" |
|
description = "This module teaches subtraction in binary using the 2's complement method, which allows subtraction to be performed as an addition operation." |
|
|
|
def generate_question(): |
|
num1 = random.randint(1, 7) |
|
num2 = random.randint(1, 7) |
|
|
|
result = num1 - num2 |
|
bit_length = 4 |
|
if result >= 0: |
|
binary_result = bin(result)[2:].zfill(bit_length) |
|
else: |
|
binary_result = bin((1 << bit_length) + result)[2:] |
|
|
|
question = f"Subtract {num2} from {num1} in base 2 using 2's complement method." |
|
correct_answer = binary_result |
|
options = [correct_answer] |
|
|
|
|
|
while len(options) < 5: |
|
fake_option = bin(random.randint(-7, 7) & 0xF)[2:] |
|
if fake_option not in options: |
|
options.append(fake_option) |
|
|
|
random.shuffle(options) |
|
explanation = ( |
|
f"The result of subtracting {num2} from {num1} in base 2 using 2's complement is {binary_result}." |
|
"\n\n**Step-by-step solution:**\n" |
|
"1. Find the 2's complement of the subtracted number.\n" |
|
"2. Add it to the first number.\n" |
|
"3. If there's a carry, discard it. The result is the binary difference." |
|
) |
|
return question, options, correct_answer, explanation |
|
|