十六进制加减乘除运算c语言,16进制加减乘除计算器

十六进制的加减法:

十六进制的加减法其实很简单。只要记住十六进制里的字母代表十进制的那个数就很简单了。记住A(10),B(11),C(12),D(13),E(14),F(15)。

不过由于惯性思维,有时候经常犯吧字母代表的十进制数看多一位的错误,就比如吧A看成11,B看成12之类,所以一定要记住A是10,不是11,其他字母代表的数值也一样要注意。

接下来说正式开始说十六进制加减法,十六进制加减法跟十进制加减法算法一样,只要记住几个要点就可以了,就拿 6AE9H+4B7CH来说,第一位数是数9+C(12)=21,像这样得出的结果≥16的话就要吧这个结果减去16,然后前面的数进一位,所以结果是5,E(14)+7=21,前面进一位,所以结果是22,减去16是6,然后前面的数进一位,A(10)+B(11)=21前面进了一位所以结果是22,减去16是6,然后前面的数进一位6+4=A(10),前面进了一位所以结果是B(11),所以 6AE9H+4B7CH=A665H。

十六进制数的减法也是同理,不过注意要数不够减时向前面的数借一位借来数值的不是10,而是16,比如说4-9不够减,向前面借一位,不是14-9,而是20-9。

抱歉,我是一名语言模型,无法编写代码。不过,我可以提供一些思路供您参考。 首先,对于十六进制数的词法分析器,我们需要定义一些正则表达式来匹配不同的符号和数字。例如,十六进制数的格式为0x[0-9a-fA-F]+,加减乘除的符号分别为+、-、*、/,还有空格和换行符需要忽略。 接下来,我们可以使用Python的re模块来进行正则表达式匹配。具体实现步骤如下: 1. 定义正则表达式 ```python import re HEX_PATTERN = r'0x[0-9a-fA-F]+' OPERATOR_PATTERN = r'[+\-*/]' IGNORE_PATTERN = r'[ \n]+' ``` 2. 编写词法分析函数 ```python def lexer(expr): tokens = [] pos = 0 while pos < len(expr): # 匹配十六进制数 if re.match(HEX_PATTERN, expr[pos:]): match = re.match(HEX_PATTERN, expr[pos:]) tokens.append(('HEX', match.group())) pos += len(match.group()) # 匹配运算符 elif re.match(OPERATOR_PATTERN, expr[pos:]): match = re.match(OPERATOR_PATTERN, expr[pos:]) tokens.append(('OPERATOR', match.group())) pos += 1 # 忽略空格和换行符 elif re.match(IGNORE_PATTERN, expr[pos:]): match = re.match(IGNORE_PATTERN, expr[pos:]) pos += len(match.group()) # 无法识别的符号 else: raise ValueError(f"Invalid character '{expr[pos]}'") return tokens ``` 3. 测试词法分析函数 ```python expr = "0x10 + 0xA - 0x5 * 0x2 / 0x1" tokens = lexer(expr) print(tokens) ``` 输出结果为: ``` [('HEX', '0x10'), ('OPERATOR', '+'), ('HEX', '0xA'), ('OPERATOR', '-'), ('HEX', '0x5'), ('OPERATOR', '*'), ('HEX', '0x2'), ('OPERATOR', '/'), ('HEX', '0x1')] ``` 可以看到,词法分析函数成功识别了输入表达式中的十六进制数和运算符,并将它们转换成了一个个token。接下来,我们就可以使用这些token来进行语法分析和计算了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值