Linux编程实践 bc:unix 的计算器

2024-01-19 01:32

本文主要是介绍Linux编程实践 bc:unix 的计算器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Unix 系统中的 bc 命令是执行一个基于字符的计算器程序。

目录

 

bc 命令

处理大整数

可编程的 bc

什么是 dc

内部如何操作

bc 与 dc 之间的关系


bc 命令

bc 命令是任意精度计算器语言,通常在linux下当计算器用。

它类似基本的计算器, 使用这个计算器可以做基本的数学运算。

常用的运算:

  • + 加法
  • - 减法
  • * 乘法
  • / 除法
  • ^ 指数
  • % 余数

举例:

2+3*4+5*10
64

bc 会显示计算结果,而且知道先算乘法在做加法。退出 bc,Ctrl+D

处理大整数

bc 的一个重要特点是,可以处理很大的整数,如:

999999999999999999999999*888888888888888888888888
888888888888888888888887111111111111111111111112

还可以通过幂运算来运算:

3333^44
10110061584495640995005898489182285794822405288498070703365111794769\
43890411064925291154381468890721948142209004688381870355409155411563\
21805747562427309521

可编程的 bc

bc 是可以编程的,可以定义变量,有逻辑判断和循环结构,语法与 c 语言类似,比如:

x = 3
if(x == 3){y = x*3;
}y
9

从严格意义来说,bc 不做任何计算,主要依赖于 dc

什么是 dc

dc是一个支持非匹配精度算法的逆波兰台式计算器。

它还允许您定义和调用宏。通常dc从标准输入读取;

如果给它任何命令参数,它们就是文件名,dc在从标准输入读取之前读取并执行文件的内容。所有正常输出为标准输出;所有误差输出为标准误差。反向波兰计算器将数字存储在堆栈上。输入一个数字将其推到堆栈上。算术运算从堆栈中弹出参数并推送结果。如计算 2+3 的值,对应的逆波兰表达式为:23+,就是说操作符在后面,也成后缀表达式。

比如:

2
3
+
p
5

必须是一个数字占用一行,比如输入 2 换行,输入 3换行,输入+换行,p 是为了打印结果。输出的意思。

内部如何操作

先将 2 入栈,在将 3 入栈,然后将栈顶的两个数出站,计算他们的和,并将结果入栈,p 是为了将栈顶元素打印出来。dc 本身是一个基于栈的计算器。

bc 与 dc 之间的关系

bc 是 dc 的预处理器,他将用户输入的表达式转换成逆波兰表达式,然后通过一个成为管道的通信程序交给 dc:

对普通用户来说,bc 就是计算器。

这篇关于Linux编程实践 bc:unix 的计算器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/620888

相关文章

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Spring事务传播机制最佳实践

《Spring事务传播机制最佳实践》Spring的事务传播机制为我们提供了优雅的解决方案,本文将带您深入理解这一机制,掌握不同场景下的最佳实践,感兴趣的朋友一起看看吧... 目录1. 什么是事务传播行为2. Spring支持的七种事务传播行为2.1 REQUIRED(默认)2.2 SUPPORTS2

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁