这是可以使用我们的多个免费在线工作站之一(例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器)在 OnWorks 免费托管服务提供商中运行的命令 dc
程序:
您的姓名
dc - 任意精度计算器
概要
直流 [-V] [--version] [-h] [--help]
[-e 脚本表达式] [--表达式=脚本表达式]
[-f 脚本文件] [--file=脚本文件]
[文件 ...]
商品描述
dc 是一个反向抛光桌面计算器,支持无限精度的算术。 它
还允许您定义和调用宏。 一般 dc 从标准输入读取; 如果
任何命令参数都被赋予它,它们是文件名,并且 dc 读取并执行
从标准输入读取之前的文件内容。 所有正常输出是
标准输出; 所有错误输出都是标准错误。
反向抛光计算器将数字存储在堆栈中。 输入一个数字将其推到
堆。 算术运算从堆栈中弹出参数并推送结果。
输入数字 dc, 输入数字(使用大写字母 A 通过 F 作为“数字”
使用大于 XNUMX 的输入基数时),带有可选的小数点。
不支持指数表示法。 要输入负数,请以数字开头
``_''。 ``-'' 不能用于此,因为它是用于减法的二元运算符。
要连续输入两个数字,请用空格或换行符将它们隔开。 这些没有
作为命令的意思。
配置
dc 可以使用以下命令行选项调用:
-V
- 版
打印出版本 dc 正在运行和版权声明,然后退出。
-h
- 帮帮我 打印使用消息简要总结这些命令行选项和错误 -
报告地址,然后退出。
-e 脚本
--表达式=脚本
在命令中添加 脚本 到处理时要运行的命令集
输入。
-f 脚本文件
--文件=脚本文件
添加文件中包含的命令 脚本文件 到要运行的命令集
在处理输入时。
如果上述处理后还有命令行参数存在,则这些参数为
解释为要处理的输入文件的名称。 一个文件名 - 指的是
标准输入流。 如果没有脚本文件或
表达式被指定。
印字 命令
p 在堆栈顶部打印值,而不更改堆栈。 换行符是
在值之后打印。
n 打印堆栈顶部的值,将其弹出,并且不打印
后换行。
P 弹出堆栈顶部的值。 如果它是一个字符串,它只是简单地打印
没有尾随换行符。 否则它是一个数字,并且它的整数部分
它的绝对值被打印为“base (UCHAR_MAX+1)”字节流。 假设
(UCHAR_MAX+1) 是 256(因为它在大多数具有 8 位字节的机器上),
序列 KSK0k1/_1Ss [ls*]Sxd0>x [256~SSD0 qaPlxx]
dsxxsx0sqLqsxLxLK+k 也可以完成这个功能。 (大部分的复杂性
上述 native-dc 代码的原因是 ~ 向后计算字符,并且
希望确保所有寄存器都恢复到原始状态。)
f 打印堆栈的全部内容而不更改任何内容。 这是一个好
如果您迷路或想弄清楚某些命令的效果,请使用该命令
命令已。
算术
+ 从堆栈中弹出两个值,将它们相加,然后压入结果。 的精度
结果仅由参数的值决定,并且足以
精确的。
- 弹出两个值,从弹出的第二个值中减去第一个弹出的值,然后
推动结果。
* 弹出两个值,将它们相乘,然后推送结果。 分数数
结果中的位数取决于当前精度值和
两个参数中的小数位数。
/ 弹出两个值,将弹出的第二个值与弹出的第一个值相除,然后
推动结果。 小数位数由精度指定
计算值。
% 弹出两个值,计算除法的余数 / 命令会
做,并推动它。 计算出的值与由
序列 Sd dd/ LD*- .
~ 弹出两个值,将弹出的第二个值与弹出的第一个值相除。 这
先推商,然后推余数。 分数数
除法中使用的数字由精度值指定。 (序列
锡 输入/ 低密度% 也可以完成这个功能,误差略有不同
检查。)
^ 弹出两个值并取幂,使用弹出的第一个值作为指数和
第二个弹出作为基地。 指数的小数部分被忽略。 这
精度值指定结果中的小数位数。
| 弹出三个值并计算模幂。 弹出的第一个值是
用作折减模量; 这个值必须是一个非零数字,并且应该是
一个整数。 弹出的第二个用作指数; 此值必须是非
负数,并且该指数的任何小数部分都将被忽略。 这
弹出的第三个值是取幂的基数,它应该是
整数。 对于小整数,这就像序列 Sm^Lm%,但是,不像 ^, 这个
命令将适用于任意大的指数。
v 弹出一个值,计算它的平方根,然后推送它。 精度值
指定结果中的小数位数。
大多数算术运算都受“精度值”的影响,您可以使用它来设置
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 k 命令。 默认精度值为零,这意味着所有算术
除了加法和减法产生整数结果。
堆 通过积极争取让商标与其相匹配的域名优先注册来维护
c 清除堆栈,使其为空。
d 复制堆栈顶部的值,推送它的另一个副本。 因此,
``4d*p'' 计算 4 的平方并打印出来。
r 颠倒(交换)栈顶两个值的顺序。 (这也可以
用序列完成 砂石实验室.)
寄存器
dc 提供至少 256 个内存寄存器,每个寄存器由一个字符命名。 你可以
将数字或字符串存储在寄存器中并稍后检索。
sr 从堆栈顶部弹出值并将其存储到寄存器中 r.
lr 复制寄存器中的值 r 并将其推入堆栈。 这不会改变
的内容 r.
每个寄存器还包含自己的堆栈。 当前寄存器值是顶部
寄存器的堆栈。
Sr 从(主)堆栈顶部弹出值并将其推入
寄存器 r. 寄存器的先前值变得不可访问。
Lr 从寄存器顶部弹出值 r的堆栈并将其推入主堆栈。
寄存器中的前一个值 r的堆栈(如果有)现在可以通过 lr
命令。
参数
dc 具有控制其操作的三个参数:精度、输入基数和
输出基数。 精度指定要保留在
大多数算术运算的结果。 输入基数控制解释
输入的数字; 所有输入的数字都使用这个基数。 输出基数用于
打印数字。
输入和输出基数是单独的参数; 你可以让他们不平等,这可以
有用或令人困惑。 输入基数必须介于 2 和 16 之间(包括 XNUMX 和 XNUMX)。 输出
基数必须至少为 2。精度必须为零或更大。 精度始终是
无论当前输入或输出基数如何,都以十进制数字测量。
i 从堆栈顶部弹出值并使用它来设置输入基数。
o 从堆栈顶部弹出值并使用它来设置输出基数。
k 从堆栈顶部弹出值并使用它来设置精度。
I 将当前输入基数压入堆栈。
O 将当前输出基数压入堆栈。
K 将当前精度压入堆栈。
琴弦
dc 对字符串和数字的操作能力有限; 你唯一的事情
可以对字符串进行打印并将它们作为宏执行(这意味着
字符串的内容被处理为 dc 命令)。 所有寄存器和堆栈都可以
持有字符串,和 dc 总是知道任何给定的对象是字符串还是数字。 一些
诸如算术运算之类的命令需要数字作为参数并在以下情况下打印错误
给定的字符串。 其他命令可以接受数字或字符串; 例如, p
命令可以接受其中之一并根据其类型打印对象。
[字符]
制作一个包含 字符 (包含在平衡 [ 和 ]
字符),并将其压入堆栈。 例如, [富]P 打印字符
FOO (没有换行符)。
a 栈顶被弹出。 如果是数字,那么这个的低位字节
number 被转换为字符串并压入堆栈。 否则顶部的 -
stack 是一个字符串,该字符串的第一个字符被推回。
x 从堆栈中弹出一个值并将其作为宏执行。 通常它应该是一个
细绳; 如果它是一个数字,它会被简单地推回到堆栈中。 例如,
[1p]x 执行宏 1p 这推动 1 在堆栈和打印 1 在单独的
线。
宏通常存储在寄存器中; [1p] 萨 存储要打印的宏 1 注册
a和 松 调用这个宏。
>r 从堆栈中弹出两个值并比较它们,假设它们是数字,
执行寄存器的内容 r 如果原始栈顶是一个宏
更大。 因此, 1 2>一个 将调用注册 a的内容和 2 1>一个 将不会。
!>r 类似,但如果原始栈顶不大于则调用宏
(小于或等于)什么是倒数第二。
<r 类似,但如果原始堆栈顶部较少则调用宏。
!<r 类似但如果原始栈顶不小于则调用宏
(大于或等于)倒数第二。
=r 类似,但如果弹出的两个数字相等,则调用宏。
!=r 类似,但如果弹出的两个数字不相等,则调用宏。
? 从终端读取一行并执行它。 此命令允许宏
请求用户输入。
q 从宏和调用它的宏中退出。 如果从
顶层,或直接从顶层调用的宏, q
命令会导致 dc 退出。
Q 从堆栈中弹出一个值并将其用作宏执行级别的计数
被退出。 因此, 3Q 退出三个层次。 这 Q 命令永远不会导致 dc 至
退出。
状态 咨询
Z 从堆栈中弹出一个值,计算它的位数(或
字符,如果它是一个字符串)并推送该数字。 a的位数
数字确实 而不去 包括任何前导零,即使那些出现在右侧
基点。
X 从堆栈中弹出一个值,计算它的小数位数,然后
推动那个数字。 对于字符串,推送的值为 0。
z 压入当前栈深度:入栈之前栈上的对象数
执行 z 命令。
其他
! 将作为系统命令运行该行的其余部分。 注意解析 !<,
!= 和 !> 命令优先,所以如果你想运行一个以
<、= 或 > 您需要在 ! 后添加一个空格。
# 将把该行的其余部分解释为注释。
:r 将从堆栈中弹出顶部的两个值。 旧的倒数第二值将是
存储在数组中 r,由旧的栈顶值索引。
;r 弹出栈顶并将其用作数组的索引 r. 选定的值
然后被压入堆栈。
请注意,寄存器的每个堆叠实例都有自己的关联数组。 因此
1 0:a 0Sa 2 0:a La 0;AP 将打印 1,因为 2 存储在 0:a 的实例中
后来弹出。
使用 dc 在线使用 onworks.net 服务
