Python编译器2进制四则运算计算器代码

import tkinter as tk

def binary_addition(a, b):
carry = 0
result = “”
length = max(len(a), len(b))
a = a.zfill(length)
b = b.zfill(length)
for i in range(length - 1, -1, -1):
sum_bits = int(a[i]) + int(b[i]) + carry
result = str(sum_bits % 2) + result
carry = sum_bits // 2
return result if carry == 0 else str(carry) + result

def binary_subtraction(a, b):
n = len(a)
m = len(b)
if n < m:
a = ‘0’ * (m - n) + a
elif m < n:
b = ‘0’ * (n - m) + b
borrow = 0
result = “”
for i in range(len(a) - 1, -1, -1):
diff = int(a[i]) - int(b[i]) - borrow
if diff < 0:
diff += 2
borrow = 1
else:
borrow = 0
result = str(diff) + result
return result.lstrip(‘0’) or ‘0’

def binary_multiplication(a, b):
result = “0”
for i in range(len(b) - 1, -1, -1):
if b[i] == ‘1’:
temp = a
else:
temp = “0” * len(a)
result = binary_addition(result, temp + “0” * (len(b) - 1 - i))
return result

def binary_division(a, b):
if b == “0”:
return “Error: Division by zero”
quotient = “0”
remainder = a
while len(remainder) >= len(b):
temp = b + “0” * (len(remainder) - len(b))
if remainder[0] == ‘1’ or remainder >= temp:
remainder = binary_subtraction(remainder, temp)
quotient = binary_addition(quotient, “1” + “0” * (len(remainder) - len(b)))
else:
quotient = quotient + “0”
return quotient, remainder

def calculate():
num1 = bin_entry1.get()
num2 = bin_entry2.get()
operation = operation_var.get()
if not all(char in ‘01’ for char in num1) or not all(char in ‘01’ for char in num2):
result_label.config(text=“输入必须是二进制数”)
return
if operation == “+”:
result_label.config(text=binary_addition(num1, num2))
elif operation == “-”:
result_label.config(text=binary_subtraction(num1, num2))
elif operation == “*”:
result_label.config(text=binary_multiplication(num1, num2))
elif operation == “/”:
quotient, remainder = binary_division(num1, num2)
result_label.config(text=f"商:{quotient},余数:{remainder}")

root = tk.Tk()
root.title(“二进制计算器”)

bin_label1 = tk.Label(root, text=“二进制数 1:”,width=10, height=10)
bin_label1.grid(row=0, column=0, padx=10, pady=10)

bin_entry1 = tk.Entry(root)
bin_entry1.grid(row=0, column=1, padx=10, pady=10)

operation_var = tk.StringVar()
operation_var.set("+")

operation_menu = tk.OptionMenu(root, operation_var, “+”, “-”, “*”, “/”)
operation_menu.grid(row=1, column=0, padx=10, pady=10)

bin_label2 = tk.Label(root, text=“二进制数 2:”,width=10, height=10)
bin_label2.grid(row=1, column=1, padx=10, pady=10)

bin_entry2 = tk.Entry(root)
bin_entry2.grid(row=1, column=2, padx=10, pady=10)

calculate_button = tk.Button(root, text="=", command=calculate)
calculate_button.grid(row=2, column=1, padx=10, pady=10)

result_label = tk.Label(root, text="")
result_label.grid(row=3, column=1, padx=10, pady=10)

root.mainloop()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易软科技(河源)有限公司

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值