Think Pascal中的位功能

时间:2013-04-25 15:25:06

标签: bit-manipulation pascal

我正在将Mac Think Pascal上编写的旧程序转换为Windows上的Pascal。 Think Pascal具有位操作功能,例如

btst(n, i : longint) : boolean
bitxor(i, j : longint) : longint
bclr(n, i : longint) : longint
bset(n, i : longint) : longint 

......和其他人。如果您知道这些功能的作用,请提供帮助。

我找到了一些相关信息,例如"Porting to GNU Pascal from traditional Macintosh Pascal compilers"。本文档使用按位运算符(如andorshrshl来实现位功能。但是,我不确定文档中的描述是否正确。

我知道这些功能的近似含义:

    如果n的第i位为1,则
  • btst(n,i)为True,否则为
  • bitxor(i,j)是按位'xor'
  • bclr(n, i)将第n位设为0
  • bset(n, i)将第n位设置为1

但是,我不知道函数中变量的正确顺序是什么(例如btst(n,i)btst(i,n))。比特是如何编号的?从左到右,从0或1开始?感谢您对这四项功能的任何帮助。

2 个答案:

答案 0 :(得分:0)

(抱歉,需要更多空间)

Dev Pascal 1.9.2的免费Pascal版本基本上是一个测试版,非常非常古老,并且自2002年以来就缺乏这样的功能。但是dev-pascal可以用于更新的FPC,我告诉他们。 Lazarus非常接近重新编译这个东西:_)

在程序和/或"界面"之后加上 {$ mode macpas} 线(单位)。命令行也是可能的, -Mmacpas (适用于编译器调用所编译的所有内容,除非在源代码中被$ mode否决)

您在MacPasc模式下支持您命名的功能,但bitxor称为bxor()。 Afaik MacPascal主要是CodeWarrior Pascal的模型,但由于这主要是一个超集Think Afaik通常工作正常。一些思想被添加。

由于macpascal知识相当少见,您可能需要订阅主fpc列表main fpc listMac Pascal List

General Lazarus Forum也被用于FPC目的,但我预计那里的老苹果方言知识人数较少。

答案 1 :(得分:0)

位在一个字节中从0到7或在一个字中从0到15编号。位0是最右边的位。因此,如果位0为1,而所有其他位为0,则字节或字的整数值为1。