Java開發(fā)個位運算技巧_第1頁
Java開發(fā)個位運算技巧_第2頁
Java開發(fā)個位運算技巧_第3頁
Java開發(fā)個位運算技巧_第4頁
Java開發(fā)個位運算技巧_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

20個位運算技巧一提起位運算,人們往往想到它的高效性,無論是嵌入式編程還是優(yōu)化系統(tǒng)的核心代碼,適當(dāng)?shù)倪\用位運算總是一種迷人的手段,或者當(dāng)您求職的時候,在代碼中寫入適當(dāng)?shù)奈贿\算也會讓您的程序增加一絲亮點,最初當(dāng)我讀《編程之美》求“1的數(shù)目”時,我才開始覺得位運算是如此之美,后來讀到《Hacker'sDelight》,感慨到HenryS.Warren把位運算運用的如此神出鬼沒,很多程序都十分精妙,我覺得在一個普通的程序中大量運用這樣的代碼的人簡直是瘋了!但掌握簡單的位運算技巧還是必要的,所以今天寫這篇博文把我積累的一些位運算技巧分享給大家,這些技巧不會是如求“1的數(shù)目”的技巧,是最基本的一行位運算技巧!1.獲得int型最大值[cpp]viewplaincopyintgetMaxInt(){return(1<<31)-1;//2147483647,由于優(yōu)先級關(guān)系,括號不可省略}另一種寫法[cpp]viewplaincopyintgetMaxInt(){return~(1<<31);//2147483647}另一種寫法[cpp]viewplaincopyintgetMaxInt(){//有些編譯器不適用return(1<<-1)-1;//2147483647}C語言中不知道int占幾個字節(jié)時候[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}JAVA版[java]viewplaincopylonggetMaxLong(){return((long)1<<127)-1;//9223372036854775807}獲得long最小值,和其他類型的最大值,最小值同理.4.乘以2運算[cpp]viewplaincopyintmulTwo(intn){//計算n*2returnn<<1;}5.除以2運算[cpp]viewplaincopyintdivTwo(intn){//負奇數(shù)的運算不可用returnn>>1;//除以2}6.乘以2的m次方[cpp]viewplaincopyintmulTwoPower(intn,intm){//計算n*(2^m)returnn<<m;}7.除以2的m次方[cpp]viewplaincopyintdivTwoPower(intn,intm){//計算n/(2^m)returnn>>m;}8.判斷一個數(shù)的奇偶性[java]viewplaincopybooleanisOddNumber(intn){return(n&1)==1;}9.碑不用警臨時漫變量優(yōu)交換爪兩個瓶數(shù)(邪面試秧??即螅〤語跟言版[c大pp廚]溫vi探ew肢p填la披in拿co禍pyvo貴id喝s偵wa毀p(茄in象t辰*a你,i閱nt土*暈b)藏{(*慎a)緞^腔=受(*業(yè)b)斥^標(biāo)=香(*淋a)等^孔=際(*獨b)制;}通用版版(瓦一些肉語言盒中得匹分開想寫)[j漆av受a]傅v貢ie本w拖pl掙ai錘nc搞op浪ya以^=的b響;b兩^=府a(chǎn)尿;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甚))虎-腦(側(cè)n詢>>它3柿1)啟;/*乞n玻>>蒜31男取百得n劈燕的符風(fēng)號,賣若n翁為正煩數(shù),俱n>甩>3渠1等渡于0榨,若陪n為永負數(shù)錄,n結(jié)>>荷31辨等于竿-1若n梁為正臣數(shù)饒n^俘0=洋0,濕數(shù)不濟變,卷若n擔(dān)為負郵數(shù)有睜n^刺-1業(yè)需金要計肆算n濃和-鼠1的陶補碼存,然鞋后進續(xù)行異矩或運細算,結(jié)果何n變副號并奔且為茂n的濱絕對懷值減尸1,澆再減夜去-娘1就哈是絕羊?qū)χ倒?宗/}11捧.取可兩個夸數(shù)的治最大絞值(剖某些挨機器池上,狂效率覺比a趕>b晴?校a鍵:b克高)通用旦版[c片pp戴]弱vi紛ew飛p禿la羅in尼co它pyin憲t剃ma悅x(語in遵t饒a,傻in歪t(yī)明b)裝{re牙tu晶rn柔b耗&扒(奧(a荷-b拼)墓>>太3算1)巡壽|納a裕&吳(汪~(眠a-咸b)積>待>或31榨);/*嚇如果旬a(chǎn)>奴=b下,(政a-廚b)奇>>噸31畏為0風(fēng),否屢則為設(shè)-1喊*/}C語若言版[c召pp恥]季vi坐ew比p炭la董in賞co姨pyin替t謠ma增x(關(guān)in善t魄x,飼in繳t好y)褲{re驗tu踢rn京x濁^探(門(x增^峰y某)遮&汁-(倉x鋸<金y)樹);/*錯如果牌x<滋y筆x<貍y返夠回1居,否禍則返憤回0裕,、鵲與0捉做與心運算日結(jié)果熄為0蹦,與寬-1謀做與抖運算赤結(jié)果驢不變鐵*/}12健.取醬兩個什數(shù)的醬最小西值(隨某些略機器兼上,溝效率香比a蛋>b撕?絨b充:a暑高)通用浸版[c贏pp巖]習(xí)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網(wǎng)mi雄n(思in相t嫂x,溪in因t放y)并{re肥tu腐rn僵y旋^累(鏈(x丹^貓y痰)拉&守-(教x廳<跟y)拳);/*積如果片x<以y利x<憲y返威回1蜂,否宣則返騙回0饞,與0礙做與郊運算千結(jié)果般為0跨,與剝-1任做與濁運算米結(jié)果談不變顏*/}13喘.判四斷符綠號是六否相栽同[j湊av友a]牲v拖ie圾w浩pl務(wù)ai盆nc目op干ybo推ol產(chǎn)ea絨n肯is咬Sa狐me肝Si驢gn堪(i站nt刻x豎,盼in區(qū)t霜y)外{雪//復(fù)有0月的情高況例盡外re貍tu呆rn含(起x帆^陶y)華>詢=歪0;梢/韻/慰tr肉ue羞表手示迎x和豬y有逢相同行的符束號,圍f洋al緒se撿表示洞x,甘y有緞相反勢的符同號。}14氣.計創(chuàng)算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醫(yī)2銜<裙<垂(n賢-1蛾);貧//兆2的桶n次貧方}15穩(wěn).判蹤蝶斷一忍個數(shù)便是不輛是2辜的冪[j文av悼a]綱v憤ie昌w按pl收ai番nc昌op風(fēng)ybo哥ol偏ea杠n天is艘Fa暖ct戒or嚼ia燙lo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論