Java开发20个位运算技巧.ppt_第1页
Java开发20个位运算技巧.ppt_第2页
Java开发20个位运算技巧.ppt_第3页
Java开发20个位运算技巧.ppt_第4页
Java开发20个位运算技巧.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

20个位运算技巧,一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读编程之美求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 Hackers Delight,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一个普通的程序中大量运用这样的代码的人简直是疯了!但掌握简单的位运算技巧还是必要的,所以今天写这篇博文把我积累的一些位运算技巧分享给大家,这些技巧不会是如求“1的数目”的技巧,是最基本的一行位运算技巧!,1.获得int型最大值,cpp view plaincopy int getMaxInt() return (1 31) - 1;/2147483647, 由于优先级关系,括号不可省略 ,另一种写法 cpp view plaincopy int getMaxInt() return (1 31);/2147483647 ,另一种写法 cpp view plaincopy int getMaxInt()/有些编译器不适用 return (1 -1) - 1;/2147483647 ,C语言中不知道int占几个字节时候 java view plaincopy int getMaxInt() return (unsigned int) - 1) 1;/2147483647 ,2.获得int型最小值,cpp view plaincopy int getMinInt() return 1 31;/-2147483648 ,另一种写法 cpp view plaincopy int getMinInt()/有些编译器不适用 return 1 -1;/-2147483648 ,3.获得long类型的最大值 C语言版 cpp view plaincopy long getMaxLong() return (unsigned long) - 1) 1;/2147483647 ,JAVA版 java view plaincopy long getMaxLong() return (long)1 127) - 1;/9223372036854775807 获得long最小值,和其他类型的最大值,最小值同理.,4.乘以2运算 cpp view plaincopy int mulTwo(int n)/计算n*2 return n 1; ,5.除以2运算 cpp view plaincopy int divTwo(int n)/负奇数的运算不可用 return n 1;/除以2 ,6.乘以2的m次方 cpp view plaincopy int mulTwoPower(int n,int m)/计算n*(2m) return n m; ,7.除以2的m次方 cpp view plaincopy int divTwoPower(int n,int m)/计算n/(2m) return n m; ,8.判断一个数的奇偶性 java view plaincopy boolean isOddNumber(int n) return (n ,9.不用临时变量交换两个数(面试常考) C语言版 cpp view plaincopy void swap(int *a,int *b) (*a) = (*b) = (*a) = (*b); ,通用版(一些语言中得分开写) java view plaincopy a = b; b = a; a = b;,10.取绝对值(某些机器上,效率比n0 ? n:-n 高) cpp view plaincopy int abs(int n) return (n (n 31) - (n 31); /* n31 取得n的符号,若n为正数,n31等于0,若n为负数,n31等于-1 若n为正数 n0=0,数不变,若n为负数有n-1 需要计算n和-1的补码,然后进行异或运算, 结果n变号并且为n的绝对值减1,再减去-1就是绝对值 */ ,11.取两个数的最大值(某些机器上,效率比ab ? a:b高),通用版 cpp view plaincopy int max(int a,int b) return b /*如果a=b,(a-b)31为0,否则为-1*/ ,C语言版 cpp view plaincopy int max(int x,int y) return x (x y) /*如果xy xy返回1,否则返回0, 、 与0做与运算结果为0,与-1做与运算结果不变*/ ,12.取两个数的最小值(某些机器上,效率比ab ? b:a高),通用版 cpp view plaincopy int min(int a,int b) return a /*如果a=b,(a-b)31为0,否则为-1*/ ,C语言版 cpp view plaincopy int min(int x,int y) return y (x y) /*如果xy xy返回1,否则返回0, 与0做与运算结果为0,与-1做与运算结果不变*/ ,13.判断符号是否相同 java view plaincopy boolean isSameSign(int x, int y) /有0的情况例外 return (x y) = 0; / true 表示 x和y有相同的符号, false表示x,y有相反的符号。 ,14.计算2的n次方 cpp view plaincopy int getFactorialofTwo(int n)/n 0 return 2 (n-1);/2的n次方 ,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论