Study Blog & Plans
Binary Math Popcorn & Homework Hacks
Hack 1: Binary to Decimal Converter
Description:
Converts any binary string into its decimal representation by summing powers of 2 based on bit positions.
Code:
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
binary_input = "11111111"
decimal_output = binary_to_decimal(binary_input)
print(f"The decimal representation of {binary_input} is {decimal_output}.")
The deminal representation of 11111111 is 255.
Hack 2: Binary Addition Battle
Code:
def binary_addition_battle(num1, num2, user_answer):
print(f"Add the following binary numbers:")
print(f"Number 1: {num1}")
print(f"Number 2: {num2}")
start_time = 0
end_time = 1.23
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.")
binary_addition_battle("1011", "1101", "11000")
Add the following binary numbers:
Number 1: 1011
Number 2: 1101
Correct! You took 1.23 seconds.
Your score: +10 points!
Hack 3: Binary Subtraction Challenge
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
result = binary_subtraction("1010", "0111")
print(result)
11
Homework (Hack 4): Binary Battle Royale
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)
# Sample round 1: addition
print(binary_addition("1001", "0110"))
# Sample round 2: dec to bin
print(decimal_to_binary(12))
# Sample round 3: bin to dec
print(binary_to_decimal("1101"))
# Sample round 4: subtraction
print(binary_subtraction("1110", "1011"))
1111
1100
13
11