PostScript之二-操作数栈,栈操作符和数学运算符

2023-11-05

引言:

这是第二篇关于 PostScript 的系列文章。本文的主要目的是论述堆栈的操作。操作数栈可能是 PostScript 中最主要的部分。赋值、算术或数学运算、循环和逻辑运算都在这块特殊的存储区内进行。是的!堆栈是一块特殊的存储区,被 PostScript 用来执行几乎所有我们要求它完成的操作。堆栈以后进先出的规则保持信息。你可以把它形象化成一根一端封闭的导管。当你向它里面放入某物时,它会将管内所有 的东西都推向封闭的一端以释放出空间。因此,最后进入的元素总是离开口的那一端最近。堆栈内的元素可以是字符串、数字常量、键码、数据块……   

栈操作符

虽然堆栈内的元素已经排列有序,但同时还存在着一些允许我们重新对这些元素进行排列的栈操作符。这些操作应用于堆栈内的一个或多个元素。操作符按其定义操纵堆栈内的元素。它们是否需要参数(在 PostScript 的术语中被称为操作数)依所进行的操作而定。若需要参数,则它们首先必须被推入堆栈中。之后,操作符依据这些参数采取相应的动作。这里我们给出了这些操作符的一个列表,并有详细的说明。我们还在后面给出了一些例子以阐明更多的细节。 

pop: 此操作符删除操作数栈顶(最后进入)的元素。

exch: 此操作符对换操作数栈顶的两个元素。

dup: 此操作符复制最后进入操作数栈的元素并将其推入操作数栈,即复制栈顶元素。 

copy: 此操作符需要一个在执行前被推入操作数栈的整型操作数(即参数)。设此整型参数为n,则给出命令 n copy 。此操作完成后,位于栈顶的n个元素的拷贝作为一批最后进入的元素而被置入操作数栈中。换言之,copy 是一个批复制操作符。 

index: 此操作符需要一个在执行前被推入操作数栈的整型操作数。设此整型参数为n,则给出命令 n index 。操作完成后,栈顶第n个元素的一个拷贝作为最后进入的元素被置入操作数栈。换言之,index 操作符能选中操作数栈的一个内部元素,生成它的拷贝,并置入操作数栈内。元素的索引以栈顶元素为零开始。 

roll: 此操作符需要两个在执行前被推入操作数栈的整型参数。设它们分别为m和n,则给出命令 m n index 。这里m指明加入滚转操作(roll)的元素数,n指明滚转操作的次数。一次滚转操作定义为:操作数栈顶元素变为栈内的第m个元素,而原栈顶以下的m-1个元素依次向栈顶移动一个位置。此过程只在n为1时成立。当n为2时,将进行连续的两次滚转操作。换言之,m 2 roll 等效于 m 1 roll m 1 roll 。参数n可以为负数。这时发生的操作过程与n为正数时

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PostScript之二-操作数栈,栈操作符和数学运算符 的相关文章

随机推荐

  • C++堆栈详解

    前言 我们经常听见一个概念 堆 heap 和栈 stack 其实在数据结构中也有同样的这两个概念 但是这和内存的堆栈是不一样的东西哦 本文也会说明他们之间的区别的 另外 本文的只是是以C C 为背景来说明 不同的语言在内存管理上面会有区别
  • java实现只能有一个相同用户登录的功能

    需求 使用相同用户名登录系统 确保同名用户登录顶掉之前用户登录或者返回登录的功能 实现效果图 java实现 首先 1 web xml中配置监听器
  • CMD 查杀端口详细

    1 netstat aon findstr pid 2 taskkill pid id f 杀死端口 注 pid 后面的pid 事 查询的进程id
  • 多元回归预测

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 多元回归预测 Matlab贝叶斯算法 bayes 优化随机森林的数据回归预测 bayes RF回归预测 多变量输入模型 评价指标包括 MAE RMSE和R2等 代码质量极
  • 工程(二)——DeeplabV3+语义分割训练自制数据集

    目录 1 配置环境 1 1 利用conda新建一个环境并激活 1 2 安装pytorch 1 3 更新bashrc环境 2 安装DeeplabV3 2 1 克隆代码 2 2 下载数据集和预训练模型 3 测试算法 4 制作VOC数据集 4 1
  • windows查看进程,以及是哪个功能启用当前的服务的

    windows查看进程 理论 实战 理论 查看进程启动的详细信息 1 tasklist v 2 wmic process get caption commandline value 可以获取进程启动的命令行参数信息等 获取具体某个信息 1
  • 将经纬度坐标在ArcGIS软件中生成系列矢量数据

    目录 环境介绍 操作内容 操作步骤 1 将经纬度坐标值编辑在excel中 注意x y对应的分别是经度和纬度 2 打开ArcMap软件 加载 xls数据 3 需要选择地理坐标系 4 点矢量数据生成 5 线矢量数据生成 6 面矢量数据生成 环境
  • 【HBZ分享】Mysql的binlog格式分类(STATEMENT, ROW, MIXED)

    STATEMENT格式 全名Statement Based Replication SBR 会记录每一条SQL语句 即SQL怎么写的 他就会怎么记录 无论更改多少行 该格式都不在乎 他只会记录SQL 优点 由于只记录sql 不会记录每一行变
  • 【转】Lwip 断连,连接几次后不通及偶尔不通的问题.

    https blog csdn net hecong kit article details 24415693 新加这个函数 并在tcp in函数里调用一下 出现不通的原因是在网络状态不流畅的情况下 连续连接N次后 LWIP默认不在连接 新
  • 保持ssh会话不掉线

    客户端 sudo vim etc ssh config 之类的文件名 添加 ServerAliveInterval 20 ServerAliveCountMax 9999 服务器端 sudo vim etc ssh sshd config
  • 解决问题:jinja2.exceptions.UndefinedError: ‘form‘ is undefined

    在flask开发的过程中 我遇到了题目上的报错 现放出自己的代码 login py login html 在运行过程中 网址显示 由此可见 login html中存在问题 在终端的报错中可以看到 最后一项报错为 为解决该问题 我在网上搜集了
  • ant-design table 表格头增加tooltip注释

    ant design table 表格头增加tooltip注释 注意屏蔽掉columns中的title属性才会有效果
  • 【一台服务器】【Web服务器】【DNS服务器配置】测试访问

    本次实验仅使用了一台服务器系统虚拟机 后续会在两台服务器系统虚拟机中进行 1 Windows Sever 2008 基本网络参数设置 如果不能解析域名 则需设置红框里面的DNS服务器地址 2 Web服务器网站设置 3 DNS服务器设置 3
  • 单元测试、集成测试、系统测试和验收测试、冒烟测试、回归测试、随机测试、探索性测试和安全测试

    单元测试 集成测试 系统测试和验收测试 冒烟测试 回归测试 随机测试 探索性测试和安全测试 前言 项目前期 中期至发布后测试启动前后我们一般要经历的几种测试方法 1 gt 单元测试 是指对软件中最小可测试单元进行检查和验证 单元测试当一段代
  • 软件测试的目的、原则及流程

    一 软件测试的目的 1 软件测试是为了发现错误而执行程序的过程 2 测试是为了证明程序有错 而不是证明程序无错 发现错误不是唯一目的 3 一个好的测试用例在于它发现至今未发现的错误 4 一个成功的测试是发现了至今未发现的错误的测试 注意 1
  • 做交互设计都有哪些需要掌握的思维方式

    由于目前的环境对这个细分领域仍然缺乏了解 我希望在这篇文章中写一些交互设计所需的思维方式 1 可用性优先 视觉靠边 一个功能个功能应该能够使用和使用 以便有人关心它是否好看 审美挑剔的用户实际上比你想象的要少得多 当然 这并不是说视觉设计并
  • 【cocos2d-x 3.x 学习笔记】 HelloWorld —— 小程序大道理

    cocos2d x 3 2 的环境搭建可以参考官方给出的教程 这里我使用的是 Win7 VS2013 1 创建项目 在Windows下搭建好环境后 打开命令行 按 Win R 输入cmd 执行下面命令 cocos new MyGame l
  • 对角线遍历二维数组

    二维数组的应用 沿对角线循环遍历 给定一个大小为 m x n 的矩阵 mat 以对角线遍历的顺序 用一个数组返回这个矩阵中的所有元素 返回结果为 1 2 4 7 5 3 6 8 9 思路 将遍历过程分为两组 偶数次向右上遍历 奇数次向左下遍
  • gh auth login时引起的could not prompt: Incorrect function.问题

    错误描述 gh auth login What account do you want to log into Use arrows to move type to filter gt GitHub com GitHub Enterpris
  • PostScript之二-操作数栈,栈操作符和数学运算符

    引言 这是第二篇关于 PostScript 的系列文章 本文的主要目的是论述堆栈的操作 操作数栈可能是 PostScript 中最主要的部分 赋值 算术或数学运算 循环和逻辑运算都在这块特殊的存储区内进行 是的 堆栈是一块特殊的存储区 被