二进制位的操作算法

问题:给定两变量,要求不使用第三变量,使得两变量值互换。
解决

a = 1234
b = 5678

print("交换前,a={0},b={1}".format(bin(a),bin(b)))

a = a ^ b
b = a ^ b
a = a ^ b

print("交换后,a={0},b={1}".format(bin(a),bin(b)))

其他二进制位操作
最低位1清零 : x&(x-1)

# 最低位1清零
a = 56
print('清零前,a:{0}'.format(bin(a)))

b = a-1

a = a & b

print('清零后,a:{0}'.format(bin(a)))

获取最低位1: x&!(x-1)

# 获取最低位的1
a = 56
print('清零前,a:{0}'.format(bin(a)))

b = ~(a-1)

a = a & b

print('清零后,a:{0}'.format(bin(a)))

交换指定两个位置的比特位:

def swapBit(x,i,j):
	#如果两个位置的数值相同则无需交换
	if ((x >> i)&1) != ((x >> j)&1):
		x ^= ((1 << i )| (1 << j))
	return x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
粒子群算法(Particle Swarm Optimization,PSO)和二进制粒子群算法(Binary Particle Swarm Optimization,BPSO)都是一种基于群体智能的优化算法,用于解决优化问题。它们的主要区别在于粒子的表示方式和搜索空间。 1. 粒子群算法(PSO): - 粒子的表示方式:每个粒子由一组实数向量表示,其中每个维度代表一个问题的解。 - 搜索空间:粒子在连续的解空间中进行搜索,可以处理实数型的优化问题。 - 更新规则:每个粒子根据自身历史最优解和群体最优解进行置更新,通过速度和置的调整来搜索最优解。 2. 二进制粒子群算法(BPSO): - 粒子的表示方式:每个粒子由一组二进制位表示,其中每个代表一个问题的解的状态(0或1)。 - 搜索空间:粒子在离散的解空间中进行搜索,适用于处理离散型的优化问题。 - 更新规则:每个粒子根据自身历史最优解和群体最优解进行的翻转操作,通过改变的状态来搜索最优解。 相比而言,二进制粒子群算法相对于粒子群算法具有以下优势: - 内存占用更小:由于二进制粒子群算法使用二进制位表示解,相比于实数向量表示的粒子群算法,所需的内存空间更小。 - 搜索效率更高:二进制粒子群算法在离散解空间中进行搜索,可以更快地找到最优解,节约搜索时间。 - 避免内存溢出问题:当问题规模较大时,粒子群算法可能会出现内存溢出问题,而二进制粒子群算法可以避免这个问题的发生。 因此,根据引用的研究结果,离散二进制粒子群算法在基于模型配电网故障诊断中的应用中,相比于其他算法(如HS-Tree、Boolean Algebra方法、遗传算法),具有更高的搜索效率,可以节约1/3~1/2的搜索时间,并且可以避免内存溢出问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值