马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 冬雪雪冬 于 2017-6-14 21:57 编辑
这节课主要学习位运算,说到位运算,就不得不说到二进制。我们说到计算机的存储单位是Byte,但还有更小的Bit,对就是位。一个Byte等于8个Bit。而位运算则是对数字的二进制的每个位做操作。 一共有7个位运算符。 还是用实例说话吧。 位运算的操作数只能为整数,为了简单选2个只占1Byte(8bit)的数,即定义成Shortint类型。 a:= 124 b:=41
Not 178,每位0变1,1变0 正好是原数字加一后取反。
a And b,每位都是1为1,否则为0
a Or b,每位都是0为0,否则为1
a Xor b,每位不同为1,否则为0
a Shl 2,每位前移2位,前2位舍掉 Shl 2相当于×4等于456,但前2位舍掉了,即减掉了256,所以等于200
a Shr 1,每位后移1位,最后1位舍掉 Shr 1相当于 div 2等于57
与运算符可以查看数字的二进制某位是1还是0,将这个数与01000000相与,如果等于0则这个数右数第七位是0,反之则为1,即我们常说的“掩码”。同样还可以将小写英文字母的ascii码转换为大写的,因为小写的ascii和大些的相差正好32,我们将小写and 11011111即可,同理大写转小写是大写的ascii or 00100000。 Xor可用于将某些位取反,需要取反的位异或1,不需要的异或0。异或后再次相同的异或则恢复原来的数值。
后半部分的编程题是分别做两个计算器 程序1的特点是有了位图的背景,方法是加入一个Image控件,并导入图片.同时把Form的BorderStyle的属性改为bsSizeToolWin,这样窗体的大小就固定了,不会被用户改变。 程序2更类似传统的计算器,简化一下,就没有做图像背景。 这里为了判断按下等号时做什么运算,提前使用了case语句。另外这次还把Edit的内容靠右对齐,这个功能delphi没有,就用了windows的API函数。具体的操作如下: SetWindowLong(Edit1.Handle, GWL_STYLE,GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_RIGHT); Edit1.invalidate; ES_RIGHT可以改为ES_LEFT或ES_CENTER。另外通过invalidate使Edit失效再重新生成,使ES_RIGHT生效。 另外我们看到了一个Or操作符,可以看出GetWindowLong是个数值,其中有2位代表了对齐方式,通过与ES_RIGHT或操作,在不改变其他位的前题下,修改这2位。(为什么不是以为呢?) 由于程序的内容比较长,就作为附件放上来了。
|