#如果!定义的HAVE_BITZIP_PAIRS_H__#定义HAVE_BITZIP_PAIRS_H__//此文件是FXT库的一部分。//版权所有(C)20102011 Joerg Arndt//许可证:GNU通用公共许可证版本3或更高版本,//请参阅主目录中的文件COPYING.txt。#包括“fxttypes.h”#包括“bits/bitsperlong.h”静态内联ulong bit_zip0_pairs(ulong x)//偶数(对-)索引中具有下半位(-对)的返回字,//即索引4k+0、4k+1。//上半部分必须为零。//0000abcd-->0a0b0c0d(a、b、c、d是位对)。{#如果BITS_PER_LONG==64x=(x|(x<<16))&0x0000ffff0000ffffUL;x=(x |(x<<8))&0x00ff00ff00ff UL;x=(x|(x<<4))&0x0f0f0f0f0f0f0f0f0fUL;x=(x |(x<<2))&0x3333333333.33333UL;//x=(x |(x<<1))&0x5555555555 5555555UL;#其他x=(x|(x<<8))&0x00ff00ffUL;x=(x |(x<<4))&0x0f0f0f UL;x=(x |(x<<2))&0x3333333UL;//x=(x |(x<<1))&0x5555555UL;#结尾返回x;}// -------------------------静态内联ulong bit_unzip0_pairs(ulong x)//将偶数位置(4k+0、4k+1)的成对比特收集到下半部分。//bit_zip0_pairs()的倒数。//奇数(对)位置(4k+2,4k+3)的位对必须为零。//0a0b0c0d-->0000abcd(a、b、c、d是位对)。{#如果BITS_PER_LONG==64//x=(x|(x>>1))&0x3333333333.33333UL;x=(x |(x>>2))&0x0f0f0f 0f0f2 UL;x=(x|(x>>4))&0x00ff00ff00FFUL;x=(x|(x>>8))&0x0000ffff0000ffffUL;x=(x|(x>>16))&0x00000000ffffffffUL;#其他//x=(x|(x>>1))&0x3333333UL;x=(x|(x>>2))&0x0f0f0f0fUL;x=(x|(x>>4))&0x00ff00ffUL;x=(x|(x>>8))&0x0000ffffUL;#结尾返回x;}// -------------------------#endif//!定义的HAVE_BITZIP_PAIRS_H__