|
Object Pascal 的運算符
運算符是程序代碼中對各種類型的數(shù)據(jù)進(jìn)行計算的符號,通常分為算數(shù)運算符、邏輯運算符、比較運算符和按位運算符。
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} const w1: Word = 61680; {二進(jìn)制表示: 11110000 11110000} w2: Word = 3855; {二進(jìn)制表示: 00001111 00001111} var w: Word; {not 運算, 只有一個運算數(shù)} procedure TForm1.Button1Click(Sender: TObject); begin w := not w1; {not 就是按位(給二進(jìn)制的每一位)取反} {11110000 11110000 取反后就是:} {00001111 00001111 } ShowMessage(IntToStr(w)); {3855} end; {and 運算, 需要兩個運算數(shù)} procedure TForm1.Button2Click(Sender: TObject); begin w := w1 and w2; {and 就是把兩個運算數(shù)按位對比, 如果相同(都是1或都是0)返回1; 不同返回0} {w1: 11110000 11110000 與} {w2: 00001111 00001111 每一位都不同, 所以返回:} {w : 00000000 00000000} ShowMessage(IntToStr(w)); {0} end; {or 運算, 需要兩個運算數(shù)} procedure TForm1.Button3Click(Sender: TObject); begin w := w1 or w2; {or 就是把兩個運算數(shù)按位對比, 只有其中一個是1就返回1; 都是0才返回0} {w1: 11110000 11110000 與} {w2: 00001111 00001111 or 后會返回:} {w : 11111111 11111111} ShowMessage(IntToStr(w)); {65535} end; {xor 運算, 需要兩個運算數(shù)} procedure TForm1.Button4Click(Sender: TObject); begin w := w1 or w2; {and 就是把兩個運算數(shù)按位對比, 只有兩個不一樣才返回1; 一樣(都是0或都是1)則返回0} {w1: 11110000 11110000 與} {w2: 00001111 00001111 xor 后會返回:} {w : 11111111 11111111} ShowMessage(IntToStr(w)); {65535; 兩個例數(shù)不太好, 沒給 xor 和 or 區(qū)別明顯} end; {shr 運算, 只有一個運算數(shù)} procedure TForm1.Button5Click(Sender: TObject); begin w := w1 shr 1; {shr 是按位右移, shr 1 是右移一位} {w1: 11110000 11110000 右移一位后是:} {w : *1111000 01111000 前面的*就是0了} ShowMessage(IntToStr(w)); {30840} {同理, 可以移動幾位, 譬如 3 位} w := w1 shr 3; ShowMessage(IntToStr(w)); {7710} {w1 shr 3 相當(dāng)與 w1 div 2的3次方} w := w1 div 8; ShowMessage(IntToStr(w)); {7710} end; {shl 運算, 只有一個運算數(shù)} procedure TForm1.Button6Click(Sender: TObject); var i: Integer; begin w := w1 shl 1; {shr 是按位左移} {w1: 11110000 11110000 左移一位后是:} {w : 1110000 111100000 } ShowMessage(IntToStr(w)); {57824} {左移 3 位} w := w1 shl 3; ShowMessage(IntToStr(w)); {34688} {w1 shl 3 相當(dāng)與 w1 * 2的3次方} w := w1 * 8; ShowMessage(IntToStr(w)); {34688} {注意這里有個問題: w1*8 以后怎么小了呢?} {因為前面已經(jīng)定義了 w 是 Word 類型的, 它的大小只有2個字節(jié)(二進(jìn)制16位), 超出會忽略} {如果換成32位(4字節(jié))的 Integer 類型, 肯定就會有真實的結(jié)果:} i := w1 shl 3; ShowMessage(IntToStr(i)); {493440} i := w1 * 8; ShowMessage(IntToStr(i)); {493440} end; end.
Delphi 的特殊符號 @:取址運算符
^:指針的引用解析操作符
符號 ^ 有兩種用途,當(dāng)它出現(xiàn)在類型標(biāo)識符之前,如^typeName,表示一個類型,該類型表示指向typeName類型變量的指針;當(dāng)它出現(xiàn)在指針變量之后,如pointer^,該符號對指針解除參照,也就是說,返回存儲在內(nèi)存地址(該地址保存在指針中)的值指針,指向的數(shù)據(jù).
#:ASCII碼值表示符;
const
tab_key=#9;//TAB鍵的ASCII值
$: 十六進(jìn)制符
|
|
|