Ahaan

BI 3 Binary Base 2 Math

Popcorn Hack 1: Binary to Decimal Converter

def binary_to_decimal(binary_str):
    decimal = 0
    for i in range(len(binary_str)):
        decimal += int(binary_str[-(i + 1)]) * (2 ** i)
    return decimal

# Example Run
binary_input = "100001"
decimal_output = binary_to_decimal(binary_input)
print(f"The decimal representation of {binary_input} is {decimal_output}.")


The decimal representation of 100001 is 33.

Popcorn Hack 2: Binary Addition Battle

import random
import time

def binary_addition_battle():
    num1 = bin(random.randint(0, 255))[2:]
    num2 = bin(random.randint(0, 255))[2:]
    
    print(f"Add the following binary numbers:")
    print(f"Number 1: {num1}")
    print(f"Number 2: {num2}")
    
    start_time = time.time()
    
    user_answer = input("Your answer (in binary): ")
    
    end_time = time.time()
    
    correct_answer = bin(int(num1, 2) + int(num2, 2))[2:]
    
    if user_answer == correct_answer:
        print(f"Correct! You took {end_time - start_time:.2f} seconds.")
        print(f"Your score: +10 points!")
    else:
        print(f"Oops! The correct answer was {correct_answer}.")
        print(f"Your score: -5 points.")

# Example Run (copy-paste into Python to play)
binary_addition_battle()


Add the following binary numbers:
Number 1: 11110011
Number 2: 11011100
Oops! The correct answer was 111001111.
Your score: -5 points.

Binary Subtraction Challenge

import random

def binary_subtraction(bin1, bin2):
    max_len = max(len(bin1), len(bin2))
    bin1 = bin1.zfill(max_len)
    bin2 = bin2.zfill(max_len)

    result = ''
    borrow = 0

    for i in range(max_len-1, -1, -1):
        bit1 = int(bin1[i])
        bit2 = int(bin2[i])

        sub = bit1 - bit2 - borrow

        if sub == 0 or sub == 1:
            result = str(sub) + result
            borrow = 0
        elif sub == -1:
            result = '1' + result
            borrow = 1
        elif sub == -2:
            result = '0' + result
            borrow = 1

    result = result.lstrip('0') or '0'
    return result

print("🧠 Binary Subtraction Challenge! 🧠")
score = 0
total_questions = 3

for question_num in range(1, total_questions + 1):
    num1 = random.randint(8, 63)
    num2 = random.randint(0, num1)

    bin1 = bin(num1)[2:]
    bin2 = bin(num2)[2:]

    print(f"\nProblem {question_num}: {bin1} - {bin2}")
    user_answer = input("Your answer: ").strip()

    correct_answer = binary_subtraction(bin1, bin2)

    if user_answer == correct_answer:
        print("✅ Correct!")
        score += 1
    else:
        print(f"❌ Incorrect. The correct answer was {correct_answer}.")

print(f"\n🎯 You got {score}/{total_questions} correct!")
print("Thanks for practicing!")

🧠 Binary Subtraction Challenge! 🧠

Problem 1: 110010 - 1111


✅ Correct!

Problem 2: 100010 - 11111
❌ Incorrect. The correct answer was 11.

Problem 3: 11000 - 1
✅ Correct!

🎯 You got 2/3 correct!
Thanks for practicing!

AP MC Questions


Question 28

A text-editing application uses binary sequences to represent each of 200 different characters. What is the minimum number of bits needed to assign a unique bit sequence to each of the possible characters?

  • A) 4
  • B) 6
  • C) 7
  • D) 8

Answer: D) 8
Explanation:
(2^7 = 128) (too small), but (2^8 = 256) (enough). Therefore, you need 8 bits.


Question 36

A computer program performs the operation 2 divided by 3 and represents the result as the value 0.6666666667. Which of the following best explains this result?

  • A) An overflow error occurred.
  • B) The precision of the result is limited due to the constraints of using a floating-point representation.
  • C) The program attempted to execute the operation with the arguments in reverse order.
  • D) The program attempted to represent a floating-point number as an integer.

Answer: B) The precision of the result is limited due to the constraints of using a floating-point representation.
Explanation:
Floating-point numbers cannot represent all real numbers exactly; (2/3) is a repeating decimal and is approximated.


Question 42

Internet protocol version 4 (IPv4) represents each IP address as a 32-bit binary number. Internet protocol version 6 (IPv6) represents each IP address as a 128-bit binary number.
Which of the following best describes the result of using 128-bit addresses instead of 32-bit addresses?

  • A) 4 times as many addresses are available.
  • B) 96 times as many addresses are available.
  • C) (2^4) times as many addresses are available.
  • D) (2^{96}) times as many addresses are available.

Answer: D) (2^{96}) times as many addresses are available.
Explanation:
The number of addresses increases exponentially by (2^{96}) when the address length increases by 96 bits.


Question 44

A computer program uses 4 bits to represent nonnegative integers. Which of the following statements describe a possible result when the program uses this number representation?

I. The operation 4 plus 8 will result in an overflow error.
II. The operation 7 plus 10 will result in an overflow error.
III. The operation 12 plus 3 will result in an overflow error.

  • A) I only
  • B) II only
  • C) II and III only
  • D) I, II, and III

Answer: B) II only Explanation:
The maximum number with 4 bits is (2^4 - 1 = 15). Any sum above 15 will cause an overflow.


Homework Hack

import random
import time

def binary_addition(a, b):
    return bin(int(a, 2) + int(b, 2))[2:]

def binary_subtraction(a, b):
    if int(a, 2) < int(b, 2):
        return "Error"
    return bin(int(a, 2) - int(b, 2))[2:]

def decimal_to_binary(n):
    return bin(n)[2:]

def binary_to_decimal(b):
    return int(b, 2)

def binary_battle_royale():
    print("👾 Welcome to Binary Battle Royale! 👾")
    score = 0
    total_rounds = 3

    for round_num in range(1, total_rounds + 1):
        print(f"\n⚡ Round {round_num} ⚡")
        mode = random.choice(["addition", "subtraction", "dec_to_bin", "bin_to_dec"])

        if mode == "addition":
            num1 = bin(random.randint(0, 15))[2:]
            num2 = bin(random.randint(0, 15))[2:]
            print(f"Add these two binary numbers: {num1} + {num2}")
            user_answer = input("Your answer (binary): ").strip()
            correct_answer = binary_addition(num1, num2)
            if user_answer == correct_answer:
                print("✅ Correct!")
                score += 1
            else:
                print(f"❌ Incorrect. The correct answer was {correct_answer}.")

        elif mode == "subtraction":
            num1_val = random.randint(8, 31)
            num2_val = random.randint(0, num1_val)
            num1 = bin(num1_val)[2:]
            num2 = bin(num2_val)[2:]
            print(f"Subtract these two binary numbers: {num1} - {num2}")
            user_answer = input("Your answer (binary): ").strip()
            correct_answer = binary_subtraction(num1, num2)
            if user_answer == correct_answer:
                print("✅ Correct!")
                score += 1
            else:
                print(f"❌ Incorrect. The correct answer was {correct_answer}.")

        elif mode == "dec_to_bin":
            decimal_number = random.randint(0, 31)
            print(f"Convert this decimal number to binary: {decimal_number}")
            user_answer = input("Your answer (binary): ").strip()
            correct_answer = decimal_to_binary(decimal_number)
            if user_answer == correct_answer:
                print("✅ Correct!")
                score += 1
            else:
                print(f"❌ Incorrect. The correct answer was {correct_answer}.")

        elif mode == "bin_to_dec":
            binary_number = bin(random.randint(0, 31))[2:]
            print(f"Convert this binary number to decimal: {binary_number}")
            user_answer = input("Your answer (decimal): ").strip()
            correct_answer = str(binary_to_decimal(binary_number))
            if user_answer == correct_answer:
                print("✅ Correct!")
                score += 1
            else:
                print(f"❌ Incorrect. The correct answer was {correct_answer}.")

    print("\n🏆 Game Over! 🏆")
    print(f"Your final score: {score}/{total_rounds}")
    if score == total_rounds:
        print("🌟 Amazing job! You're a Binary Master!")
    elif score >= total_rounds // 2:
        print("👍 Good effort! Keep practicing!")
    else:
        print("💡 Don't worry — review the rules and try again!")

# --- Start the game ---
binary_battle_royale()


👾 Welcome to Binary Battle Royale! 👾

⚡ Round 1 ⚡
Subtract these two binary numbers: 1111 - 1
✅ Correct!

⚡ Round 2 ⚡
Add these two binary numbers: 1011 + 110
❌ Incorrect. The correct answer was 10001.

⚡ Round 3 ⚡
Subtract these two binary numbers: 11011 - 1001
✅ Correct!

🏆 Game Over! 🏆
Your final score: 2/3
👍 Good effort! Keep practicing!

Q1:
Explain in 1-2 sentences how to convert a binary number into a decimal number.

Answer:
To convert a binary number to decimal, multiply each bit by 2 raised to the power of its position (starting from 0 at the right) and then add all the results together.


Q2:
If you are given the binary number 11111111, what decimal number is that?

Answer:
The decimal value of 11111111 is 255.

Scroll to top