Python——二进制16位加法器(采用手算二进制加法的过程实现)(tkinter实现)

  • 1.add16bit.py
  • 2.结果示例
  • 3.下篇文章预告

[功能模块作者]
CSDN用户(TDTX),TDTX主页——负责加法功能
CSDN用户(philo42),philo42主页——负责示意图绘制

1.add16bit.py

def add16bit():import tkinter as tkwind1=tk.Tk()wind1.geometry('620x550+800+300')wind1.title('十六位加法器')def add1616bit():nu1_1=eval(ent16.get())   #获得文本框中的数字存入相应的变量中nu1_2=eval(ent15.get())nu1_3=eval(ent14.get())nu1_4=eval(ent13.get())nu1_5=eval(ent12.get())nu1_6=eval(ent11.get())nu1_7=eval(ent10.get())nu1_8=eval(ent9.get())nu1_9=eval(ent8.get())nu1_10=eval(ent7.get())nu1_11=eval(ent6.get())nu1_12=eval(ent5.get())nu1_13=eval(ent4.get())nu1_14=eval(ent3.get())nu1_15=eval(ent2.get())nu1_16=eval(ent1.get())nu2_1=eval(ent32.get())nu2_2=eval(ent31.get())nu2_3=eval(ent30.get())nu2_4=eval(ent29.get())nu2_5=eval(ent28.get())nu2_6=eval(ent27.get())nu2_7=eval(ent26.get())nu2_8=eval(ent25.get())nu2_9=eval(ent24.get())nu2_10=eval(ent23.get())nu2_11=eval(ent22.get())nu2_12=eval(ent21.get())nu2_13=eval(ent20.get())nu2_14=eval(ent19.get())nu2_15=eval(ent18.get())nu2_16=eval(ent17.get())nusp1=0   #nusp1~16是结果输出8个框中,每一位上的值nusp2=0nusp3=0nusp4=0nusp5=0nusp6=0nusp7=0nusp8=0nusp9=0nusp10=0nusp11=0nusp12=0nusp13=0nusp14=0nusp15=0nusp16=0nujw=0   #nujw是两个数每一位作二进制加法时,产生的进位值#下面是手工计算二进制加法的过程实现if nu1_1+nu2_1+nujw==1:nusp1=1nujw=0tx1.insert('insert',nusp1)tx1.insert('insert','\n')elif nu1_1+nu2_1+nujw==0:nusp1=0nujw=0tx1.insert('insert',nusp1)tx1.insert('insert','\n')elif nu1_1+nu2_1+nujw==2:nusp1=0nujw=1tx1.insert('insert',nusp1)tx1.insert('insert','\n')elif nu1_1+nu2_1+nujw==3:nusp1=1nujw=1tx1.insert('insert',nusp1)tx1.insert('insert','\n')if nu1_2+nu2_2+nujw==1:nusp2=1nujw=0tx2.insert('insert',nusp2)tx2.insert('insert','\n')elif nu1_2+nu2_2+nujw==0:nusp2=0nujw=0tx2.insert('insert',nusp2)tx2.insert('insert','\n')elif nu1_2+nu2_2+nujw==2:nusp2=0nujw=1tx2.insert('insert',nusp2)tx2.insert('insert','\n')elif nu1_2+nu2_2+nujw==3:nusp2=1nujw=1tx2.insert('insert',nusp2)tx2.insert('insert','\n')if nu1_3+nu2_3+nujw==1:nusp3=1nujw=0tx3.insert('insert',nusp3)tx3.insert('insert','\n')elif nu1_3+nu2_3+nujw==0:nusp3=0nujw=0tx3.insert('insert',nusp3)tx3.insert('insert','\n')elif nu1_3+nu2_3+nujw==2:nusp3=0nujw=1tx3.insert('insert',nusp3)tx3.insert('insert','\n')elif nu1_3+nu2_3+nujw==3:nusp3=1nujw=1tx3.insert('insert',nusp3)tx3.insert('insert','\n')if nu1_4+nu2_4+nujw==1:nusp4=1nujw=0tx4.insert('insert',nusp4)tx4.insert('insert','\n')elif nu1_4+nu2_4+nujw==0:nusp4=0nujw=0tx4.insert('insert',nusp4)tx4.insert('insert','\n')elif nu1_4+nu2_4+nujw==2:nusp4=0nujw=1tx4.insert('insert',nusp4)tx4.insert('insert','\n')elif nu1_4+nu2_4+nujw==3:nusp4=1nujw=1tx4.insert('insert',nusp4)tx4.insert('insert','\n')if nu1_5+nu2_5+nujw==1:nusp5=1nujw=0tx5.insert('insert',nusp5)tx5.insert('insert','\n')elif nu1_5+nu2_5+nujw==0:nusp5=0nujw=0tx5.insert('insert',nusp5)tx5.insert('insert','\n')elif nu1_5+nu2_5+nujw==2:nusp5=0nujw=1tx5.insert('insert',nusp5)tx5.insert('insert','\n')elif nu1_5+nu2_5+nujw==3:nusp5=1nujw=1tx5.insert('insert',nusp5)tx5.insert('insert','\n')if nu1_6+nu2_6+nujw==1:nusp6=1nujw=0tx6.insert('insert',nusp6)tx6.insert('insert','\n')elif nu1_6+nu2_6+nujw==0:nusp6=0nujw=0tx6.insert('insert',nusp6)tx6.insert('insert','\n')elif nu1_6+nu2_6+nujw==2:nusp6=0nujw=1tx6.insert('insert',nusp6)tx6.insert('insert','\n')elif nu1_6+nu2_6+nujw==3:nusp6=1nujw=1tx6.insert('insert',nusp6)tx6.insert('insert','\n')if nu1_7+nu2_7+nujw==1:nusp7=1nujw=0tx7.insert('insert',nusp7)tx7.insert('insert','\n')elif nu1_7+nu2_7+nujw==0:nusp7=0nujw=0tx7.insert('insert',nusp7)tx7.insert('insert','\n')elif nu1_7+nu2_7+nujw==2:nusp7=0nujw=1tx7.insert('insert',nusp7)tx7.insert('insert','\n')elif nu1_7+nu2_7+nujw==3:nusp7=1nujw=1tx7.insert('insert',nusp7)tx7.insert('insert','\n')if nu1_8+nu2_8+nujw==1:nusp8=1nujw=0tx8.insert('insert',nusp8)tx8.insert('insert','\n')elif nu1_8+nu2_8+nujw==0:nusp8=0nujw=0tx8.insert('insert',nusp8)tx8.insert('insert','\n')elif nu1_8+nu2_8+nujw==2:nusp8=0nujw=1tx8.insert('insert',nusp8)tx8.insert('insert','\n')elif nu1_8+nu2_8+nujw==3:nusp8=1nujw=1tx8.insert('insert',nusp8)tx8.insert('insert','\n')if nu1_9+nu2_9+nujw==1:nusp9=1nujw=0tx9.insert('insert',nusp9)tx9.insert('insert','\n')elif nu1_9+nu2_9+nujw==0:nusp9=0nujw=0tx9.insert('insert',nusp9)tx9.insert('insert','\n')elif nu1_9+nu2_9+nujw==2:nusp9=0nujw=1tx9.insert('insert',nusp9)tx9.insert('insert','\n')elif nu1_9+nu2_9+nujw==3:nusp9=1nujw=1tx9.insert('insert',nusp9)tx9.insert('insert','\n')if nu1_10+nu2_10+nujw==1:nusp10=1nujw=0tx10.insert('insert',nusp10)tx10.insert('insert','\n')elif nu1_10+nu2_10+nujw==0:nusp10=0nujw=0tx10.insert('insert',nusp10)tx10.insert('insert','\n')elif nu1_10+nu2_10+nujw==2:nusp10=0nujw=1tx10.insert('insert',nusp10)tx10.insert('insert','\n')elif nu1_10+nu2_10+nujw==3:nusp10=1nujw=1tx10.insert('insert',nusp10)tx10.insert('insert','\n')if nu1_11+nu2_11+nujw==1:nusp11=1nujw=0tx11.insert('insert',nusp11)tx11.insert('insert','\n')elif nu1_11+nu2_11+nujw==0:nusp11=0nujw=0tx11.insert('insert',nusp11)tx11.insert('insert','\n')elif nu1_11+nu2_11+nujw==2:nusp11=0nujw=1tx11.insert('insert',nusp11)tx11.insert('insert','\n')elif nu1_11+nu2_11+nujw==3:nusp11=1nujw=1tx11.insert('insert',nusp11)tx11.insert('insert','\n')if nu1_12+nu2_12+nujw==1:nusp12=1nujw=0tx12.insert('insert',nusp12)tx12.insert('insert','\n')elif nu1_12+nu2_12+nujw==0:nusp12=0nujw=0tx12.insert('insert',nusp12)tx12.insert('insert','\n')elif nu1_12+nu2_12+nujw==2:nusp12=0nujw=1tx12.insert('insert',nusp12)tx12.insert('insert','\n')elif nu1_12+nu2_12+nujw==3:nusp12=1nujw=1tx12.insert('insert',nusp12)tx12.insert('insert','\n')if nu1_13+nu2_13+nujw==1:nusp13=1nujw=0tx13.insert('insert',nusp13)tx13.insert('insert','\n')elif nu1_13+nu2_13+nujw==0:nusp13=0nujw=0tx13.insert('insert',nusp13)tx13.insert('insert','\n')elif nu1_13+nu2_13+nujw==2:nusp13=0nujw=1tx13.insert('insert',nusp13)tx13.insert('insert','\n')elif nu1_13+nu2_13+nujw==3:nusp13=1nujw=1tx13.insert('insert',nusp13)tx13.insert('insert','\n')if nu1_14+nu2_14+nujw==1:nusp14=1nujw=0tx14.insert('insert',nusp14)tx14.insert('insert','\n')elif nu1_14+nu2_14+nujw==0:nusp14=0nujw=0tx14.insert('insert',nusp14)tx14.insert('insert','\n')elif nu1_14+nu2_14+nujw==2:nusp14=0nujw=1tx14.insert('insert',nusp14)tx14.insert('insert','\n')elif nu1_14+nu2_14+nujw==3:nusp14=1nujw=1tx14.insert('insert',nusp14)tx14.insert('insert','\n')if nu1_15+nu2_15+nujw==1:nusp15=1nujw=0tx15.insert('insert',nusp15)tx15.insert('insert','\n')elif nu1_15+nu2_15+nujw==0:nusp15=0nujw=0tx15.insert('insert',nusp15)tx15.insert('insert','\n')elif nu1_15+nu2_15+nujw==2:nusp15=0nujw=1tx15.insert('insert',nusp15)tx15.insert('insert','\n')elif nu1_15+nu2_15+nujw==3:nusp15=1nujw=1tx15.insert('insert',nusp15)tx15.insert('insert','\n')if nu1_16+nu2_16+nujw==1:nusp16=1nujw=0tx16.insert('insert',nusp16)tx16.insert('insert','\n')elif nu1_16+nu2_16+nujw==0:nusp16=0nujw=0tx16.insert('insert',nusp16)tx16.insert('insert','\n')elif nu1_16+nu2_16+nujw==2:nusp16=0nujw=1tx16.insert('insert',nusp16)tx16.insert('insert','\n')elif nu1_16+nu2_16+nujw==3:nusp16=1nujw=1tx16.insert('insert',nusp16)tx16.insert('insert','\n')#下面是将计算结果插入到17个输出文本框tx17.insert('insert',nujw)tx17.insert('insert','\n')tx100.delete(1.0,'end')tx110.delete(1.0,'end')tx120.delete(1.0,'end')tx100.insert('insert',nu1_16)tx100.insert('insert',nu1_15)tx100.insert('insert',nu1_14)tx100.insert('insert',nu1_13)tx100.insert('insert',nu1_12)tx100.insert('insert',nu1_11)tx100.insert('insert',nu1_10)tx100.insert('insert',nu1_9)tx100.insert('insert',nu1_8)tx100.insert('insert',nu1_7)tx100.insert('insert',nu1_6)tx100.insert('insert',nu1_5)tx100.insert('insert',nu1_4)tx100.insert('insert',nu1_3)tx100.insert('insert',nu1_2)tx100.insert('insert',nu1_1)tx110.insert('insert',nu2_16)tx110.insert('insert',nu2_15)tx110.insert('insert',nu2_14)tx110.insert('insert',nu2_13)tx110.insert('insert',nu2_12)tx110.insert('insert',nu2_11)tx110.insert('insert',nu2_10)tx110.insert('insert',nu2_9)tx110.insert('insert',nu2_8)tx110.insert('insert',nu2_7)tx110.insert('insert',nu2_6)tx110.insert('insert',nu2_5)tx110.insert('insert',nu2_4)tx110.insert('insert',nu2_3)tx110.insert('insert',nu2_2)tx110.insert('insert',nu2_1)tx120.insert('insert',nusp16)tx120.insert('insert',nusp15)tx120.insert('insert',nusp14)tx120.insert('insert',nusp13)tx120.insert('insert',nusp12)tx120.insert('insert',nusp11)tx120.insert('insert',nusp10)tx120.insert('insert',nusp9)tx120.insert('insert',nusp8)tx120.insert('insert',nusp7)tx120.insert('insert',nusp6)tx120.insert('insert',nusp5)tx120.insert('insert',nusp4)tx120.insert('insert',nusp3)tx120.insert('insert',nusp2)tx120.insert('insert',nusp1)#下面是界面上各种组件的生成与排布放置lb1=tk.Label(wind1,text='输入数字1:',width=10,height=2)lb1.place(x=100,y=30)ent1=tk.Entry(wind1,width=3)ent1.place(x=120,y=60)ent2=tk.Entry(wind1,width=3)ent2.place(x=146,y=60)ent3=tk.Entry(wind1,width=3)ent3.place(x=172,y=60)ent4=tk.Entry(wind1,width=3)ent4.place(x=198,y=60)ent5=tk.Entry(wind1,width=3)ent5.place(x=224,y=60)ent6=tk.Entry(wind1,width=3)ent6.place(x=250,y=60)ent7=tk.Entry(wind1,width=3)ent7.place(x=276,y=60)ent8=tk.Entry(wind1,width=3)ent8.place(x=302,y=60)ent9=tk.Entry(wind1,width=3)ent9.place(x=328,y=60)ent10=tk.Entry(wind1,width=3)ent10.place(x=354,y=60)ent11=tk.Entry(wind1,width=3)ent11.place(x=380,y=60)ent12=tk.Entry(wind1,width=3)ent12.place(x=406,y=60)ent13=tk.Entry(wind1,width=3)ent13.place(x=432,y=60)ent14=tk.Entry(wind1,width=3)ent14.place(x=458,y=60)ent15=tk.Entry(wind1,width=3)ent15.place(x=484,y=60)ent16=tk.Entry(wind1,width=3)ent16.place(x=510,y=60)lbs=tk.Label(wind1,text='+',font=('Arial', 14))lbs.place(x=80,y=78)lb2=tk.Label(wind1,text='输入数字2:',width=10,height=2)lb2.place(x=100,y=90)ent17=tk.Entry(wind1,width=3)ent17.place(x=120,y=120)ent18=tk.Entry(wind1,width=3)ent18.place(x=146,y=120)ent19=tk.Entry(wind1,width=3)ent19.place(x=172,y=120)ent20=tk.Entry(wind1,width=3)ent20.place(x=198,y=120)ent21=tk.Entry(wind1,width=3)ent21.place(x=224,y=120)ent22=tk.Entry(wind1,width=3)ent22.place(x=250,y=120)ent23=tk.Entry(wind1,width=3)ent23.place(x=276,y=120)ent24=tk.Entry(wind1,width=3)ent24.place(x=302,y=120)ent25=tk.Entry(wind1,width=3)ent25.place(x=328,y=120)ent26=tk.Entry(wind1,width=3)ent26.place(x=354,y=120)ent27=tk.Entry(wind1,width=3)ent27.place(x=380,y=120)ent28=tk.Entry(wind1,width=3)ent28.place(x=406,y=120)ent29=tk.Entry(wind1,width=3)ent29.place(x=432,y=120)ent30=tk.Entry(wind1,width=3)ent30.place(x=458,y=120)ent31=tk.Entry(wind1,width=3)ent31.place(x=484,y=120)ent32=tk.Entry(wind1,width=3)ent32.place(x=510,y=120)lb3=tk.Label(wind1,text='------------------------------------------------------------------------------------------',height=2)lb3.place(x=90,y=150)bt1=tk.Button(wind1,text='相加',command=add1616bit)bt1.place(x=547,y=78)lb4=tk.Label(wind1,text='数字1+数字2结果为:')lb4.place(x=90,y=180)tx1=tk.Text(wind1,width=3,height=12)tx1.place(x=510,y=210)tx2=tk.Text(wind1,width=3,height=12)tx2.place(x=484,y=210)tx3=tk.Text(wind1,width=3,height=12)tx3.place(x=458,y=210)tx4=tk.Text(wind1,width=3,height=12)tx4.place(x=432,y=210)tx5=tk.Text(wind1,width=3,height=12)tx5.place(x=406,y=210)tx6=tk.Text(wind1,width=3,height=12)tx6.place(x=380,y=210)tx7=tk.Text(wind1,width=3,height=12)tx7.place(x=354,y=210)tx8=tk.Text(wind1,width=3,height=12)tx8.place(x=328,y=210)tx9=tk.Text(wind1,width=3,height=12)tx9.place(x=302,y=210)tx10=tk.Text(wind1,width=3,height=12)tx10.place(x=276,y=210)tx11=tk.Text(wind1,width=3,height=12)tx11.place(x=250,y=210)tx12=tk.Text(wind1,width=3,height=12)tx12.place(x=224,y=210)tx13=tk.Text(wind1,width=3,height=12)tx13.place(x=198,y=210)tx14=tk.Text(wind1,width=3,height=12)tx14.place(x=172,y=210)tx15=tk.Text(wind1,width=3,height=12)tx15.place(x=146,y=210)tx16=tk.Text(wind1,width=3,height=12)tx16.place(x=120,y=210)tx17=tk.Text(wind1,width=3,height=12,fg='red',bg='yellow')tx17.place(x=94,y=210)#下面是示意图生成的代码,为另一合作的小伙伴所写,CSDN用户(philo42)canvas=tk.Canvas(wind1,bg='white',height=80,width=250)line=canvas.create_line(200,20,150,20)line=canvas.create_line(170,20,180,15)#箭头line=canvas.create_line(170,20,180,25)#箭头rect=canvas.create_rectangle(200,10,200+40,10+20)line=canvas.create_line(200,60,150,60)line=canvas.create_line(170,60,180,55)#箭头line=canvas.create_line(170,60,180,65)#箭头rect=canvas.create_rectangle(200,50,200+40,50+20)line=canvas.create_line(150,20,150,60)line=canvas.create_line(150,40,80,40)line=canvas.create_line(125,40,135,35)#箭头line=canvas.create_line(125,40,135,45)#箭头rect=canvas.create_rectangle(30,30,30+50,30+20)canvas.place(x=120,y=400)lb60=tk.Label(wind1,text='ALU')lb60.place(x=110,y=430)lb70=tk.Label(wind1,text='主存')lb70.place(x=290,y=430)tx120=tk.Text(wind1,width=18,height=1)tx120.place(x=130,y=405)tx100=tk.Text(wind1,width=18,height=1)tx100.place(x=290,y=385)tx110=tk.Text(wind1,width=18,height=1)tx110.place(x=290,y=475)wind1.mainloop()

2.结果示例


【重新输入数据后,点击“相加”按钮,会先删除示意图框中的内容,再换行输出结果!】

3.下篇文章预告

采用手算二进制加法的过程,实现二进制加法器比较简单,至于32、64位加法器可以在本系列代码基础上,轻易增加得到!
下篇文章是:原码1位乘,4位乘法器,采用计算机组成原理书上,原码1位乘计算过程实现,并输出相应的步骤与文字提示!

Python——二进制16位加法器(采用手算二进制加法的过程实现)(tkinter实现)【2021-07-08】相关推荐

  1. Python——二进制8位加法器(采用手算二进制加法的过程实现)(tkinter实现)【2021-07-08】

    Python--二进制8位加法器(采用手算二进制加法的过程实现)(tkinter实现) 1.add8bit.py 2.结果示例 [功能模块作者] CSDN用户(TDTX),TDTX主页--负责加法功能 ...

  2. python 将16位 png 深度图转化为伪彩色图

    python 将16位 png 深度图转化为伪彩色图: 全部代码如下: import cv2 import os.path import glob import numpy as np from PI ...

  3. python 生成16位integer

    1. np.random.randint(low, high=None, size=None, dtype=None)其中 dtype=np.uint16代表16位的integer,可参考librar ...

  4. 笔记连载 | Day7 【半加器、全加器、16位加法器、16位减法器设计】 【原理及verilog实现、仿真】篇

    听说99%的同学都来这里充电吖 本系列为线下学员学习笔记整理分享,如有想要报名参加线下培训,可以点击以下超链接文章了解,购买开发板可以到叁芯智能科技企业淘宝店下单. 各类研修班 | FPGA就业研修班 ...

  5. 采用流水线技术实现8位加法器

    说明      本文基于FPGA和CPLD器件,采用非流水线和流水线技术实现8位加法器,并对比其Quartus II仿真结果和波形时序.      器件选择: Stratix:EP1S40F1020C ...

  6. 16位先行进位加法器--原理篇

    前话 这个加法器写的是一波三折啊,昨天晚上花了两三个小时好不容易写完编译通过了,之后modelsim莫名其妙弹出一个对话框,我没看清就那么不小心一点,结果代码没了,惨痛啊.害的我今天早上又花了一上午的 ...

  7. C语言有符号整数最小值,16位带符号整数为什么是

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:16位带符号整数为什么是回答:剩下15位二进制数的最大值是每一位数都是1的情况,即2^15-1=326.326化成二进制为1000 ...

  8. 4位加法器的设计代码verilog_HDLBits:在线学习Verilog(六 · Problem 25-29)

    本系列文章将和读者一起巡礼数字逻辑在线学习网站 HDLBits 的教程与习题,并附上解答和一些作者个人的理解,相信无论是想 7 分钟精通 Verilog,还是对 Verilog 和数电知识查漏补缺的同 ...

  9. 计算机原理74181芯片,利用SN74181芯片构成16位ALU及原理.ppt

    利用SN74181芯片构成16位ALU及原理 (2)利用SN74181芯片构成16位ALU的原理 l)组间串行进位的16位ALU的构成 2)组间并行进位的16位ALU的构成 SN74182芯片:是一个 ...

最新文章

  1. BeanUtils威力和代价
  2. 使用Lucene2.3构建搜索引擎
  3. 项目管理(一)计时计件
  4. NoSQL还是SQL?这一篇讲清楚
  5. CentOS 6.3安装(详细图解教程)
  6. javascript中json格式转为字符串
  7. java奇数偶数数组_在Java数组中将数组中的奇数置后偶数置前(两种不同的方法实现)...
  8. 微服务发展的历史_“美丽新羌 光照未来” 新羌社区开展微视频宣传片拍摄活动...
  9. no route to host什么意思_Day 74:Vue里的route和router
  10. Python学习笔记之元组
  11. 华为浏览器:即日起全面清理违规信息 严管“自媒体”账号
  12. Matlab Tricks(二十五)—— plot 属性
  13. [nowcoder]最长区间
  14. IEC 60335-2-21:2022 安全-第2-21部分:储水式热水器的特殊要求
  15. 鼎捷易助8.0ERP系统制造业ERP系统介绍
  16. 网站CDN加速后对URL中?后的参数跟随问题
  17. R16之Access to Unlicensed Spectrum(3)
  18. 查看centos是多少位的方式
  19. 单片机秒表c语言,单片机制作秒表计时器(c语言)
  20. TravelFlan携小猴问问亮相ITB,看人工智能如何化解旅游痛点

热门文章

  1. UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xbb in position 51: ord
  2. 【T-SQL】一、数据库的创建与管理
  3. 今年看过的最好的动画片 无敌破坏王
  4. TeamViewer账号未激活问题
  5. 【工程/物理光学(三)——光的干涉技术】
  6. Mean Squared Error 和 Maximum-A-Posterior (Maximum Likelihood Estimation) 的关系
  7. myeclipse下载git中的代码步骤
  8. MSP430寄存器的设置与作用
  9. JS 实现别踩白块功能
  10. Oracle中SCOTT用户的 emp、dept、bonus、salgrade表的意思及其属性的意思