python隨機交換二進位制位

2021-06-23 05:07:41 字數 751 閱讀 1937

最近業餘研究遺傳演算法,交叉演算法採取隨機多點交叉,也就是把兩個數的二進位制位隨機交換,**如下:

__corsser_mask = (

0xfffffffe,0xfffffffd,0xfffffffb,0xfffffff7,

0xffffffef,0xffffffdf,0xffffffbf,0xffffff7f,

0xfffffeff,0xfffffdff,0xfffffbff,0xfffff7ff,

0xffffefff,0xffffdfff,0xffffbfff,0xffff7fff,

0xfffeffff,0xfffdffff,0xfffbffff,0xfff7ffff,

0xffefffff,0xffdfffff,0xffbfffff,0xff7fffff,

0xfeffffff,0xfdffffff,0xfbffffff,0xf7ffffff,

0xefffffff,0xdfffffff,0xbfffffff,0x7fffffff,

)def binarry_crossover(val1,val2,max_bit=16):

"""隨機抽取一些位置,隨機交換兩個數的二進位制位,最大交換數目max_bit

"""t = val1^val2

for i in range(max_bit):

t &= __corsser_mask[random.randint(0,31)]

return val1^t,val2^t

二進位制位交換 反轉 計數

如何交換乙個整形數的二進位制表示的其中兩位.比如要把a,與b進行交換。那麼方法如下 x表示任意值。x x x xaxx x xxbx x x 分為兩步 第一步 首先要求得 x x x x0xx x xx0x x x 第二步 在第一步的基礎上加上 0000 0000 0000 0b00 0000 00...

二進位制位運算

與運算,6 3 2 或運算 6 3 7 異或運算 6 3 5 反碼 6 7 左移 3 2 12 3 2 2 12 右移 3 1 1 3 2 1 無符號右移 3 1 1 3 2 1 按位與,當兩位同時為1時才為1如 1 1 1 1 0 0 0 1 0 6 3相當於 0110 0011 0010 2 按...

更新二進位制位

問題描述 給出兩個32位的整數n和m,以及兩個二進位制位的位置i和j。寫乙個方法來使得n中的第i到j位等於m m會是n中從第i為開始到第j位的子串 日期 2017 8 22 思路 由於題目的提示中已經給出,i到j有足夠的空間放置m,將n中的第i到j之間的數字全部置為0,最後與m異或即可 includ...