Hello everyone!
I am a beginner writing a simple program that performs four arithmetic functions between binary numbers. Writing functions, addition, subtraction and multiplication, there were no problems, but division… I don’t understand how it can be implemented.
The main condition of my task is not to use ready-made functions and data. Two binary numbers that will be given to arithmetic functions must be in the form of a list ([1, 0, 1, 0] – for example) of type int. The division function should return the result as two inverted lists, the first is the quotient, the second is the remainder.
Successful arithmetic functions:
def add_zero(target: list[int], amout: int) -> list[int]:
for index in range(amout):
target.append(0)
return target
def binary_addition(first_bin: list[int], second_bin: list[int]) -> list[int]:
sum: int = 0
carry: int = 0
result_bin: list[int] = []
max_size: int = max(len(first_bin), len(second_bin))
add_zero(first_bin, (max_size - len(first_bin)))
add_zero(second_bin, (max_size - len(second_bin)))
for index in range(max_size):
sum = first_bin[index] + second_bin[index] + carry
result_bin.append(sum % 2)
carry = sum // 2
if carry > 0:
result_bin.append(carry)
return result_bin
def binary_subtraction(first_bin: list[int], second_bin: list[int]) -> list[int]:
diff: int = 0;
borrow: int = 0;
result_bin: list[int] = []
max_size = max(len(first_bin), len(second_bin))
add_zero(first_bin, (max_size - len(first_bin)))
add_zero(second_bin, (max_size - len(second_bin)))
for index in range(max_size):
diff = first_bin[index] - second_bin[index] - borrow
if diff < 0:
diff += 2
borrow = 1
else:
borrow = 0;
result_bin.append(diff)
return result_bin
def binary_multiplication(first_bin: list[int], second_bin: list[int]) -> list[int]:
temp_bin: list[int] = first_bin[:]
result_bin: list[int] = [0]
for number in second_bin:
if number == 1:
result_bin = binary_addition(result_bin, temp_bin)
temp_bin.insert(0, 0);
return result_bin
Write a division function, but quickly got confused.
Ge0g is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.