- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java开发20个位运算技巧Java开发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*(2^m) return n m; } 7.除以2的m次方 [cpp] view plaincopy int divTwoPower(int n,int m){//计算n/(2^m) return n m; } 8.判断一个数的奇偶性 [java] view plaincopy boolean isOddNumber(int n){ return (n 1) == 1; } 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为正数 n^0=0,数不变,若n为负数有n^-1 需要计算n和-1的补码,然后进行异或运算, 结果n变号并且为n的绝对值减1,再
您可能关注的文档
- in situ hybridization.doc
- In Shanghai which Hospital is the best at which Department BW1101G1.doc
- IMS 学习设计规范与教学设计.doc
- IMS的多媒体会议系统研究.docx
- Inaugural Address.ppt
- int13与扩展int13区别.doc
- ing作表定宾补.ppt
- IE8浏览器使用的十个小技巧提升.doc
- iE浏览器的设置与使用.ppt
- Ikey使用说明.doc
- 2025年数控伺服系统项目立项申请报告.docx
- 2023年度文化教育职业技能鉴定能力检测试卷附参考答案详解(A卷).docx
- 2023年度文化教育职业技能鉴定能力检测试卷附参考答案详解(黄金题型).docx
- 2023年度文化教育职业技能鉴定能力检测试卷附参考答案详解(夺分金卷).docx
- 2023年度文化教育职业技能鉴定能力检测试卷附参考答案详解(巩固).docx
- 2023年度文化教育职业技能鉴定能力检测试卷附参考答案详解【黄金题型】.docx
- 三方工伤赔偿协议合同书.docx
- 2023年度文化教育职业技能鉴定能力检测试卷附参考答案详解【黄金题型】.docx
- 2023年度文化教育职业技能鉴定能力检测试卷附参考答案详解【精练】.docx
- 2023年度文化教育职业技能鉴定能力检测试卷及参考答案详解(综合题).docx
文档评论(0)