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; {二进制表示: 11110000 11110000}
w2: Word = 3855; {二进制表示: 00001111 00001111}
var
w: Word;
{not 运算, 只有一个运算数}
procedure TForm1.Button1Click(Sender: TObject);
begin
w := not w1;
{not 就是按位(给二进制的每一位)取反}
{11110000 11110000 取反后就是:}
{00001111 00001111 }
ShowMessage(IntToStr(w)); {3855}
end;
{and 运算, 需要两个运算数}
procedure TForm1.Button2Click(Sender: TObject);
begin
w := w1 and w2;
{and 就是把两个运算数按位对比, 同是1返回1, 反之返回0}
{w1: 11110000 11110000 与}
{w2: 00001111 00001111 每一位都不同, 所以返回:}
{w : 00000000 00000000}
ShowMessage(IntToStr(w)); {0}
end;
{or 运算, 需要两个运算数}
procedure TForm1.Button3Click(Sender: TObject);
begin
w := w1 or w2;
{and 就是把两个运算数按位对比, 只有其中一个是1就返回1; 都是0才返回0}
{w1: 11110000 11110000 与}
{w2: 00001111 00001111 or 后会返回:}
{w : 11111111 11111111}
ShowMessage(IntToStr(w)); {65535}
end;
{xor 运算, 需要两个运算数}
procedure TForm1.Button4Click(Sender: TObject);
begin
w := w1 or w2;
{and 就是把两个运算数按位对比, 只有两个不一样才返回1; 一样(都是0或都是1)则返回0}
{w1: 11110000 11110000 与}
{w2: 00001111 00001111 xor 后会返回:}
{w : 11111111 11111111}
ShowMessage(IntToStr(w)); {65535; 两个例数不太好, 没给 xor 和 or 区别明显}
end;
{shr 运算, 只有一个运算数}
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 相当与 w1 div 2的3次方}
w := w1 div 8;
ShowMessage(IntToStr(w)); {7710}
end;
{shl 运算, 只有一个运算数}
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 相当与 w1 * 2的3次方}
w := w1 * 8;
ShowMessage(IntToStr(w)); {34688}
{注意这里有个问题: w1*8 以后怎么小了呢?}
{因为前面已经定义了 w 是 Word 类型的, 它的大小只有2个字节(二进制16位), 超出会忽略}
{如果换成32位(4字节)的 Integer 类型, 肯定就会有真实的结果:}
i := w1 shl 3;
ShowMessage(IntToStr(i)); {493440}
i := w1 * 8;
ShowMessage(IntToStr(i)); {493440}
end;
end.
分享到:
相关推荐
delphi四则运算随机出题系统,界面温馨,适合幼儿园及小学生,可以自己选择数据范围,可以统计得分。
异或运算 进行加密 delphi编写异或运算 进行加密 delphi编写异或运算 进行加密 delphi编写异或运算 进行加密 delphi编写异或运算 进行加密 delphi编写异或运算 进行加密 delphi编写异或运算 进行加密 delphi编写异或...
Delphi调用外部程序详解Delphi调用外部程序详解Delphi调用外部程序详解Delphi调用外部程序详解Delphi调用外部程序详解
法国的工程师写的delphi矩阵运算源码,超级方便
Description Object-oriented linear algebra and numerical methods library in Object Pascal - Dynamic Integef, Float, String, Boolean, Complex arrays - Input/Output routines - Linear Algebra, Numerical...
可以实现矩阵的逆、转置、矩阵相乘等运算,适合初学者学习使用
delphi 组件开发详解 详细介绍delphi组件开发的全过程
Delphi代码规范详解:Delphi的开发指南 —— 编码标准文档
delphi 开发工具Tlist类介绍有助于delphi程序员开发查找,方便快捷
DELPHI关键字详解.doc word版 方便打印 对Delphi关键字 详细解释,附加实例
webbrowser delphi 事件详解
Delphi单元文件详解Delphi单元文件详解
Delphi窗体设计,MDI应用,控件的使用,文件、目录及驱动器,串口通信,windows系统控制,API技术,数据库等问题的详解。
Delphi计算器 能够处理各种基本算术运算
自己用delphi写的大数运算单元,支持加、减、乘、除(商和余数),里面有调用各方法的示例。
delphi多线程编程详解,里面对delphi多线程的应用做了详细的说明
Delphi中TApplication详解
异或运算加密(Delphi) 一个Delphi写的异或加密解密工具
Delphi下IntraWeb应用开发详解Delphi下IntraWeb应用开发详解