马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1、使用下面的代码将最右边的1改变为0,假如没有1则结果为0(e.g.,01011000=>01010000): x & (x-1) 此代码可以用来判断一个无符号的整数是否为2的幂,假如x & (x-1)==1,则x为2的幂,否则x不为2的幂 2、相似地,下面的代码可以用来判断一个无符号的整数是否具备2n-1的格式(包括n=0、1) x & (x+1) 3、下面的代码将隔离最右边的1,假如右边没有1则结果返回0 (e.g., 01011000 =>00001000): x & (-x) 4、下面的代码将隔离最右边的0,假如右边没有0则结果返回0 (e.g., 10100111 =>00001000): ~x & (x+1) 5、下面的代码都可以用来产生一个掩码,用来保留尾部的0,假如x=0则返回全1字节 (e.g., 01011000 =>00000111): ~x & (x-1) 或 ~(x | -x) 或 (x & -x)-1 6、下面的代码用来产生一个掩码,用来保留最右边的1与尾部所有的0,假如x=0则返回全1字节(e.g., 01011000 =>00001111): x ^ (x-1) 7、下面的代码用来将最右边的1右边的0全部改为1,假如x=0则返回全1字节(e.g., 01011000 = >01011111): x | (x-1) 8、下面的代码将最右边的1临近的1取反 (e.g., 01011000 =>01000000): ((x | (x-1))+1) & x
|