位运算备忘

这篇博客介绍了位运算的基本知识,包括如何利用位运算判断一个整数是奇数还是偶数,以及如何确定一个整数是否为2的整数次幂。通过位运算的巧妙运用,可以高效地实现这些数学判断。
摘要由CSDN通过智能技术生成

基本知识

程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑 运算符 ,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)【摘自百度百科】
    位与运算(&)   相同位的两个数字都为1,则为1;若有一个不为1,则为0
    位或运算(|)     相同位只要一个为1即为1
    位异或(^)        相同位不同则为1,相同则为0
    位反运算(~)    相同位1则为0,0则为1

用法

     1.判断一个整数是奇数还是偶数
可以使用位与运算的特性,奇数的二进制表示方法最后一个数必定是1 ,偶数的二进制表示方法最后一个数必定是0,
这时可以和1进行与运算,如果结果是1,则表示是奇数,如果结果是0,则表示是偶数。
	function test($num){
		if($num<0) return 0;

		if($num & 1){
			return 0;
		}else{
			return 1;
		}
	}

     2.判断一个整数是否是2的整数次幂
也是使用位与运算的特性,如果该数是2的整数次幂,那么这个数的二进制表示形式为 0010000... 那么这个数减一之后的数的二进制 0001111...
这两个数与运算如果结果是0则表示是整数次幂,否则不是。
	function test($n){
		if($n<2) return 0;
		$res = $n & ($n-1);
		if($res==0){
			return 1;
		}else{
			return 0;
		}
	}


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值