and和or指令技巧小记

技巧小记

and 指令
  • 按位与
  • 作用:只将某一位变成0,而其他位保持不变
  • 使用:谁要变0,谁就和0与
  • 示例:将一个小写的英文字母b变成大写B。
  • 思路:b的ASCII表示为0110 0010b,只需要把第5位(从最右边一位作为0位,开始算起)变成0就可以。所以第5位要变0,那就第五位需要和0与。数学上习惯把A-B中的A称为被减数,因为要从它里面减,它要减少,所以是被减的那个;B称为减数,因为B标明到底要减多少个,类似指令指针寄存器IP,可以看做为一个偏移。所以这里为了方便说明问题,借用数学里面的这种方式,将A and B中的A称为被与数,将B称为与数。这里,与数有一定的技巧,或者说与数可以当作一个模板。什么样的模板呢?其实就两个模板,分别是0000 0000b和1111 1111b,根据问题的不同,选用不同的模板。对于刚才的小写转大写问题,因为要将第5位变成0,还是那句话,谁要变0谁就和0与,所以第五位就要和0与上一与了。怎么与?直接与吗?显然不可能,0110 0010b有8位,0只有一位,这不是以大欺小么。别忘了刚才的模板,对于这个问题明显要选用1111 1111b这个模板了,有所谓万“1”丛中一朵“0”,只需要将模板中第5位变成0(即1101 1111b),将它作为与数和被与数进行and,就可以完成替换被与数中指定位为0的操作。
					被与数				0110 0010b    b      62H
		  and         与数			&	1101 1111b	  与模板
		----------------------    --------------------------
			   按位与的结果				0100 0010b    B		 42H
or 指令
  • 按位或
  • 作用:只将某一位变成1,而其他位保持不变
  • 使用:谁要变1,谁就和1或
  • 示例:将一个大写的英文字母B变成小写b。
  • 思路:万“0”丛中一朵“1”,和上面and的思想类似
			        被或数				0100 0010b    B      42H
		   or         或数			|	0010 0000b	  或模板
		----------------------    --------------------------
			   按位或的结果				0110 0010b    b		 62H
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值