参考博文 : http://blog.csdn.net/morewindows/article/details/7354571
输入一个数字,然后计算出它二进制中'1'的个数。此方法相对于使用自带的String库,把空间节约到了O(1)。
static int bitCount(int n) { int count = 0; while (n != 0) { count += (n & 1); n >>= 1; } return count; }
获取x中0到16位的低位值
x = x & 0xffff;
获取16~32位的值
x = (x >> 16 ) & 0xffff;
求相反数 // 取反+1
i = (i ^ -1) + 1;
求绝对值
证明 :
先移位来取符号位,int i = a >> 31;要注意如果a为正数,i等于0,为负数,i等于-1。然后对i进行判断——如果i等于0,直接返回。否之,返回~a+1。
//by MoreWindows( http://blog.csdn.net/MoreWindows ) int my_abs(int a) { int i = a >> 31; return i == 0 ? a : (~a + 1); }
或者 因为 x >>31 只可能我0或-1 可能你会觉得-1右移31不会是1吗,怎么变成了-1了,因为负数右移的时候,左边填充的不是0而是1!!
1. 与0相异或,不变 如果x是正数的话,不变
2. 与-1(oxffff) 相异或,相当于取反,以为为1的地方变成了0,为0的地方变成了1 ,然后+1
i = (x ^ (x >> 31)) - (x >> 31);
交换
void swap(int a,int b){ a = a^b; b = a^b; a = a^b; }
证明:
第一步 a^=b 即a=(a^b);
第二步 b^=a 即b=b^(a^b),由于^运算满足交换律,b^(a^b)=b^b^a。由于一个数和自己异或的结果为0并且任何数与0异或都会不变的,所以此时b被赋上了a的值。
第三步 a^=b 就是a=a^b,由于前面二步可知a=(a^b),b=a,所以a=a^b即a=(a^b)^a。故a会被赋上b的值。
相关推荐
java基础知识点----位运算方面的一些小知识
知名公司笔试中常见数据结构试题,希望对大家有用
位运算的一些常用法,无论是平时的开发还是用于笔试面试,都非常有用
笔试 常见 编程题 .doc ACM笔试 常见 编程题 .doc ACM笔试 常见 编程题 .doc ACM
C语言常见笔试题 C语言常见笔试题 C语言常见笔试题 C语言常见笔试题
提高篇则针对各大IT公司如微软、腾讯、百度、360等公司的笔试面试题作详细的解答,使大家能熟练应对在笔试面试中位操作题目。 下面就先来对位操作作个全面总结,欢迎大家补充。 在计算机中所有数据都是以二进制的...
Java常见笔试_面试题目深度剖析
Java程序员常见笔试题分析,对相关问题进行阐述,供下载学习
Java常见笔试,面试题目深度剖析Java常见笔试,面试题目深度剖析Java常见笔试,面试题目深度剖析Java常见笔试,面试题目深度剖析Java常见笔试,面试题目深度剖析
常见嵌入式笔试题常见嵌入式笔试题
常见的Java 笔试题 常见的Java 笔试题 常见的Java 笔试题
机械类笔试题机械笔试题目本人找到的一些机械行业名企的笔试题目,中英文笔试题目都有。 希望机械 同仁后续能不断更新题目,谢谢
数据库面试和笔试中的常见题,给找工作的小朋友用,嘿
JAVA笔试常见试题,等级考试试题
C++ 笔试 常见函数的实现 C++ 笔试 常见函数的实现 C++ 笔试 常见函数的实现
幼儿教师笔试考题案例分析集个.doc
常见c语言的笔试题很基础的
常见LINUX笔试题,word格式。没事就看看呗