我正在将 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
...和别的。如果您知道这些功能的作用,请提供帮助。
我找到了一些相关信息,例如“从传统的 Macintosh Pascal 编译器移植到 GNU Pascal”。本文档使用按位运算符(如and
、or
和)实现位函数。但是,我不确定文档中的描述是否正确。shr
shl
我知道函数的大致含义:
btst(n,i)
如果 n 的第 i 位为 1,则为 True,否则为 Falsebitxor(i,j)
是按位“异或”bclr(n, i)
将 n 的第 i 位设置为 0bset(n, i)
将 n 的第 i 位设置为 1
但是,我不知道函数中变量的正确顺序是什么(例如btst(n,i)
或btst(i,n)
)。另外,位是如何编号的?从左到右,从0还是1开始?感谢您对这四个功能的任何帮助。