干货 软件 Rules & Tips
1. 遵守中国大陆相关法律法规
2. 严禁发布盗版软件
3. 严禁传播破解方法或工具
4. 严禁发布甩链接的下载信息
5. 提倡分享亲测好用的软件
6. 名称、版本、平台是必要信息

请教虫虫们编程的小问题

查看: 1592|回复: 8
仙人略困 发表于 2022-10-4 08:05:50
刚开始学编程,请问如何实现输入"a+(-)b="
计算机从中识别出a,b呢?
眉如远山 发表于 2022-10-4 09:10:54
接受到"+"号,也就是ASCII表{43        2B        +},表示第一个数.同理检测到等号,表示第二个数.现在的数是字符串.字符串转数字,c自带一些函数,可以使用.如果你对接收的数据采用数组存储,也是大同小异的
 楼主| 仙人略困 发表于 2022-10-4 08:27:30

通的是c语言吧
姓C的某人 发表于 2022-10-4 08:11:17
哪一门编程语言
 楼主| 仙人略困 发表于 2022-10-4 08:16:30

image.png
学习单片机里的这样一个东西
CBLZX 发表于 2022-10-4 10:21:30
(个人理解/猜测,仅供参考)
   UART只是一种 通用异步收发传输器 ,应该没有自然计算的功能?只负责数据的传输?
   至于实现自然数的加减法并显示。
   我认为是可能可以是这样。
   上位机(PC)  ----UART---> 单片机(接收数据)---> SOC中的某个程序(解析数据) ---> 门电路(计算加法)-->(调用显示驱动)->显示结果。
-->至于如何解析数据。我的想法是。
    最开始发送的时候根据UART数据格式进行封装,到UART驱动之后给到上层App,就是原始的数据,一般会用ASCII来表示,
    比如 50+124= 转换为 16进制就是   0x32,0x7C,0x2B,0x3D(0x是为了表示16进制)

  1. unsigned char data[4]={0x32,0x7C,0x2B,0x3D};
  2. //do something
  3. unsigned char display_date = (data[2] == 0x2B)?data[0]+data[1]:data[0]-data[1]);
  4. //use display api to display
  5. display(....)
  6. return;

  7. //ps:
  8. //because unsigned char,max value = 0xFF,if want to calc big data, and use four char to 1 data(int).
复制代码

   
Nullptr 发表于 2022-10-4 16:48:19
仙人略困 发表于 2022-10-4 08:16
学习单片机里的这样一个东西

        这一层楼的问题和你主楼提出的问题貌似是两个问题。
        先说主楼的问题,每个字符都用一个ascii码表示,a是  0x61, + 是 0x2B,( 是0x28,b 是0x62,计算机读取键盘的输入,拿到的输入值存在的形式就是一个个ascii码。
       关于这层楼的问题,这是个常见的c语言练习题,涉及到一些数据结构的知识--栈,通常实现四则运算的方式是通过栈来辅助完成的,可以先递进着学,以下博客都是随便搜到的,仅供参考。
只有两个运算数的简单四则运算
带括号的四则运算
较复杂的四则运算
Tension 发表于 2022-10-6 11:19:20
计算机四则运算可以试试逆波兰表达式
lwj 发表于 2022-10-6 12:12:11
我也来学习一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

虫部落 陕ICP备14001577号-1川公网安备 51019002003015号联系我们FAQ关于虫部落免责声明虫部落生存法则蛙先知 - AI 玩家社区 🚧

Build with for "make search easier" Copyright © 2013-2024. Powered by Discuz! GMT+8, 2024-4-26 23:54

快速回复 返回顶部 返回列表