设为首页 加入收藏

TOP

Linux下的dc计算器
2014-11-24 07:37:45 来源: 作者: 【 】 浏览:0
Tags:Linux 计算器

dc采用逆波兰式计算表达式,计算过程是对栈的手动维护。逆波兰式看起来很别扭,但跑起来当然是很有效率的。

乱七八糟的东西就不说了,直接切入script正题


负号在dc里用_表示而非-,因为-是二元运算符“减号”


打印类命令:

p :打印栈顶元素并换行

n : 打印栈顶元素并将其弹出栈,完毕后不换行

P : putchar ( int(栈顶元素) % 256) 并弹栈顶,不换行

f : 从栈顶至栈底打印栈中所有值,每个一行



算数运算符:

+ : 依次弹出w1与w2,将w2+w1压栈。精度为结果值精度

- : 依次弹出w1与w2,将w2-w1压栈

* : 依次弹出w1与w2,将w2*w1压栈。精度为结果值精度与precision中较大值

/ : 依次弹出w1与w2,将w2/w1压栈。精度为precision

% : 依次弹出w1与w2,将w2-w2/w1*w1压栈

~ : 依次弹出w1与w2,依次将w2/w1与w2%w1压栈

^ : 依次弹出w1与w2,将w2^((int)w1)压栈。精度为w2精度与precision中较大值

| : 依次弹出w1 w2与w3,将 w3 ^ ((int)w2) (mod w1) 压栈。w1 w3 需为整数

v : 弹出w1,将sqrt(v)压栈。精度为precision



栈操作:

c : 清空栈

d : 将栈顶元素复制并压栈

r : 交换栈顶两元素 XXX



寄存器操作:

dc提供至少256个寄存器,分别用256个字符表示。一般用'a'..'z',不够可以用123ABC!@#,再不够就用\x00..\xff

除了主栈外,每个寄存器都是独立的栈,寄存器栈顶的值被称为这个寄存器的值

sr : 弹出主栈顶元素w1,若r栈为空,则将w1压入r栈,否则将r栈顶元素改为w1

lr : 将r寄存器的值压入主栈

Sr : 弹出主栈顶元素w1,压入r栈

Lr : 弹出r栈顶元素w1并将其压入主栈


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android 摇一摇 源代码 真实可用 下一篇Android 源码导入Eclipse技巧(Ub..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)