def binary_to_decimal(binary_str):
    try:
        return int(binary_str, 2)
    except ValueError:
        return None

def decimal_to_binary(decimal_num):
    if isinstance(decimal_num, int):
        return bin(decimal_num)[2:]
    else:
        #extra credit
        fractional_part = decimal_num - int(decimal_num)
        binary_fraction = ""
        while fractional_part and len(binary_fraction) < 10:
            fractional_part *= 2
            bit = int(fractional_part)
            binary_fraction += str(bit)
            fractional_part -= bit
        return bin(int(decimal_num))[2:] + "." + binary_fraction

def add_binary(b1, b2):
    return bin(binary_to_decimal(b1) + binary_to_decimal(b2))[2:]

def subtract_binary(b1, b2):
    return bin(binary_to_decimal(b1) - binary_to_decimal(b2))[2:]

def multiply_binary(b1, b2):
    return bin(binary_to_decimal(b1) * binary_to_decimal(b2))[2:]

def divide_binary(b1, b2):
    denominator = binary_to_decimal(b2)
    if denominator == 0:
        return "Error: Division by zero"
    return bin(binary_to_decimal(b1) // denominator)[2:]

def calculator():
    print("Welcome to the Binary Calculator!")
    print("Options: add, subtract, multiply, divide, bin2dec, dec2bin")
    
    while True:
        choice = input("Enter operation (or 'exit' to quit): ").lower()

        if choice == 'exit':
            print("Goodbye!")
            break

        if choice in ['add', 'subtract', 'multiply', 'divide']:
            b1 = input("Enter first binary number: ")
            b2 = input("Enter second binary number: ")
            if binary_to_decimal(b1) is None or binary_to_decimal(b2) is None:
                print("Invalid binary input.")
                continue

            if choice == 'add':
                print("Result:", add_binary(b1, b2))
            elif choice == 'subtract':
                print("Result:", subtract_binary(b1, b2))
            elif choice == 'multiply':
                print("Result:", multiply_binary(b1, b2))
            elif choice == 'divide':
                print("Result:", divide_binary(b1, b2))

        elif choice == 'bin2dec':
            b = input("Enter binary number: ")
            result = binary_to_decimal(b)
            if result is not None:
                print("Decimal:", result)
            else:
                print("Invalid binary number.")

        elif choice == 'dec2bin':
            d = input("Enter decimal number: ")
            try:
                d = float(d)
                print("Binary:", decimal_to_binary(d))
            except ValueError:
                print("Invalid decimal input.")

        else:
            print("Unknown operation.")
calculator()
Welcome to the Binary Calculator!
Options: add, subtract, multiply, divide, bin2dec, dec2bin