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

下载本文档

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

文档简介

20个位运算技巧一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到《Hacker'sDelight》,感慨到HenryS.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一个普通的程序中大量运用这样的代码的人简直是疯了!但掌握简单的位运算技巧还是必要的,所以今天写这篇博文把我积累的一些位运算技巧分享给大家,这些技巧不会是如求“1的数目”的技巧,是最基本的一行位运算技巧!1.获得int型最大值[cpp]viewplaincopyintgetMaxInt(){return(1<<31)-1;//2147483647,由于优先级关系,括号不可省略}另一种写法[cpp]viewplaincopyintgetMaxInt(){return~(1<<31);//2147483647}另一种写法[cpp]viewplaincopyintgetMaxInt(){//有些编译器不适用return(1<<-1)-1;//2147483647}C语言中不知道int占几个字节时候[java]viewplaincopyintgetMaxInt(){return((unsignedint)-1)>>1;//2147483647}2.获得int型最小值[cpp]viewplaincopyintgetMinInt(){return1<<31;//-2147483648}另一种写法[cpp]viewplaincopyintgetMinInt(){//有些编译器不适用return1<<-1;//-2147483648}3.获得long类型的最大值C语言版[cpp]viewplaincopylonggetMaxLong(){return((unsignedlong)-1)>>1;//2147483647}JA哨VA杏版[j总av真a]卫v牢ie考w亚pl咬ai津nc践op摆ylo睬ng霸g电et湿Ma绿xL访on终g(视){re栗tu铸rn丙(偿(l叛on鲜g)硬1绣<<腐1锻27携)沈-抬1;皮//奸92鸡23拣37结20路36撑85脂47秒75遭80夺7}获得恋lo佳ng歉最小剩值,缩慧和其俱他类锻型的嫂最大畏值,饲最小友值同币理.4.殖乘以慨2运翁算[c部pp铲]盲vi夹ew栋p字la哭in树co宵pyin糖t朵mu搏lT及wo浸(i宁nt狐n福){答//厘计算奏n*宵2re愉tu健rn忧n锁<隙<海1;}5.问除以朽2运沃算[c益pp群]虽vi蒸ew末p壁la炉in发co衣pyin杠t中di钓vT恶wo道(i善nt神n各){撑//河负奇淹数的孟运算令不可葬用re却tu消rn疾n稿>策>仓1;岭//扒除以帽2}6.栏乘以徒2的咐m次蝴方[c残pp县]陵vi增ew短p舱la守in揪co兄pyin灭t途mu丹lT灰wo震Po门we润r(背in凤t青n,填in烛t魔m)朵{/忙/计颠算n笔*(洪2^拆m)re戴tu叶rn核n劳<赏<盈m;}7.腹除以酱2的挠m次占方[c议pp纺]斗vi嚷ew谜p树la涝in五co僚pyin皱t队di血vT嫌wo傍Po矩we朋r(售in愿t按n,纪in死t帮m)厦{/凤/计笼算n顽/(陪2^莲m)re哭tu批rn五n喝>艳>滚m;}8.登判断巴一个匹数的饺奇偶乔性[j消av欲a]荐v朴ie寻w矿pl焰ai朴nc灭op购ybo胃ol买ea望n民is垒Od权dN逆um券be膊r(湾in旬t抵n)蛛{re伙tu磨rn现(侨n起&数1)跟=际=牙1;}9.愚不用冰临时指变量夫交换堵两个漏数(画面试碍常考洞)C语帅言版[c亿pp证]复vi慰ew硬p糊la索in链co奴pyvo痛id服s箩wa舌p(觉in把t法*a闯,i左nt温*危b)驰{(*历a)随^询=灯(*绒b)怀^寒=倒(*退a)辰^茶=时(*娘b)炉;}通用查版(愚一些絮语言询中得负分开劈燕写)[j扔av炮a]场v饭ie茶w浩pl忆ai程nc刘op随ya弹^=业b核;b乓^=扇a猎;a丧^=气b托;10投.取鹅绝对态值(脖某些躲机器妄上,乳效率剖比n诉>0搂?卡n薄:-糊n饲高)[c嗓pp安]串vi暴ew府p脾la监in欧co唱pyin乏t盆ab闲s(明in吊t词n)的{re悄tu筹rn石(从n秩^读(n须>去>据31孩))圾-孩(慌n驾>>爹3朽1)决;/*茅n冬>>楼31演取佩得n轿的符晃号,柿若n男为正慌数,党n>呆>3计1等从于0刑,若宰n为危负数针,n币>>称31孔等于宪-1若n厨为正掩数雅n^忽0=蜘0,挂数不赶变,挂若n诵为负洪数有录n^档-1铲需笛要计论算n浑和-低1的吊补码谅,然贡后进负行异绩或运简算,结果区n变暑号并之且为佣n的嚼绝对不值减林1,悬再减荒去-访1就池是绝妥对值旋*衡/}11络.取盲两个季数的本最大滤值(躲某些担机器磨上,躁效率盐比a屋>b恭?扬a委:b燥高)通用小版[c禁pp喉]则vi灶ew风p予la百in婆co飘pyin共t森ma蹦x(胜in麻t哀a,横in先t遗b)益{re钉tu勤rn泄b懒&跑(山(a僻-b靠)赌>>阶3否1)宜|善a企&穴(妨~(具a-君b)粥>呆>龟31岸);/*终如果侵a>腹=b资,(博a-价b)喇>>订31妥为0辈,否诸则为肺-1视*/}C语您言版[c膛pp斥]蔑vi张ew师p行la把in议co除pyin较t统ma欠x(粥in四t浮x,览in跟t惑y)旋{re情tu宵rn药x包^勤(脂(x扁^待y识)故&宪-(雕x话<椅y)严);/*勇如果辈x<标y胳x<脱y返谋回1仿,否餐则返舰回0许,、渔与0刚做与管运算病结果狱为0漫,与揉-1客做与逼运算妻结果最不变旋*/}12扁.取时两个讯数的咸最小工值(错某些挤机器晋上,汁效率录比a宏>b余?营b片:a害高)通用杨版[c赏pp铺]础vi龄ew姓p瓦la器in取co期pyin钻t斗mi廉n(逼in裤t派a,纺in泡t易b)政{re暑tu魔rn珍a鸡&菜(物(a饮-b罩)梳>>昆3躁1)吸|种b溪&集(躺~(转a-梁b)列>口>军31呀);/*淘如果岔a>费=b政,(宗a-烘b)徐>>价31控为0册,否茎则为眨-1驼*/}C语盗言版[c庭pp厕]侨vi绝ew等p附la松in茫co婆pyin六t昼mi谁n(刘in誉t超x,共in社t枕y)座{re校tu瘦rn腾y如^接(灶(x溜^甲y这)贞&少-(壶x咽<美y)菜);/*尽如果饲x<佛y织x<孩y返凭回1晚,否是则返缓回0邪,与0插做与糠运算周结果蔽为0蹄,与鲁-1赏做与浇运算笑结果阳不变躲*/}13光.判斗断符嗽号是臂否相着同[j糖av歼a]桐v逝ie鼻w都pl州ai适nc快op婆ybo谊ol阀ea弱n闪is尤Sa悼me拆Si绒gn蚂(i蹲nt衫x怒,寄in洋t切y)行{我//金有0烤的情肝况例根外re把tu孩rn淡(午x患^估y)假>锐=滋0;熔/腾/样tr知ue谅表斤示朋x和锯y有蔑相同链的符炉号,孕f眼al躬se创表示志x,自y有潜相反裤的符调号。}14碰.计洲算2箭的n指次方[c帖pp理]华vi军ew纤p抬la摩in袋co懂pyin绕t捡ge涛tF擦ac招to考ri切al拳of延Tw红o(殊in诸t运n)壤{/悉/n绳>间0re趴tu第rn鞠2州<倒<阅(n方-1诸);向//昼2的钥n次扁方}15慈.判鲜断一问个数骨是不底是2侨的幂[j婆av突a]研v摆ie挂w垮pl和ai半nc胜op应ybo纹ol桂ea蜜n

温馨提示

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

评论

0/150

提交评论