我正在將Windows上編寫的舊程序Think Pascal轉換爲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"。本文檔使用按位運算符(如and
,or
,shr
和shl
)實現了位功能。但是,我不確定文檔中的描述是否正確。
我知道的功能,大概意思是:
btst(n,i)
是真,如果n的第i位爲1,否則爲假bitxor(i,j)
是按位 '異或'bclr(n, i)
套我的n個位爲0bset(n, i)
設定n的第i位至1
但是,我不知道函數中變量的正確順序是什麼(例如, btst(n,i)
或btst(i,n)
)。另外,位如何編號?從左到右,從0還是1開始?感謝您對這四項功能的任何幫助。
FWIW它應該與MPW Pascal中的相同,對此可以在線獲取更多信息。 – 2013-04-25 15:39:26
你現在不說你使用了什麼編譯器?如果您使用Free Pascal,您是否啓用了macpas模式? – 2013-04-26 06:48:29
@Geoff:感謝您編輯我的問題。 – user2320292 2013-04-26 19:28:49