優秀程式設計師不得不知道的20個位運算技巧
原文地址:http://blog.csdn.net/tender001/article/details/8542975
一提起位運算,人們往往想到它的高效性,無論是嵌入式程式設計還是優化系統的核心程式碼,適當的運用位運算總是一種迷人的手段,或者當您求職的時候,在程式碼中寫入適當的位運算也會讓您的程式增加一絲亮點,最初當我讀《程式設計之美》求“1的數目”時,我才開始覺得位運算是如此之美,後來讀到 《Hacker's Delight》,感慨到Henry
S.Warren把位運算運用的如此神出鬼沒,很多程式都十分精妙,我覺得在一個普通的程式中大量運用這樣的程式碼的人簡直是瘋了!但掌握簡單的位運算技巧還是必要的,所以今天寫這篇博文把我積累的一些位運算技巧分享給大家,這些技巧不會是如求“1的數目”的技巧,是最基本的一行位運算技巧
1.獲得int型最大值
[java] view plaincopyprint?- int getMaxInt(){
- return (1 << 31) - 1;//2147483647, 由於優先順序關係,括號不可省略
- }
另一種寫法
[java] view plaincopyprint?- int getMaxInt(){
-
return ~(1 <<
- }
另一種寫法
[java] view plaincopyprint?- int getMaxInt(){//有些編譯器不適用
- return (1 << -1) - 1;//2147483647
- }
C語言中不知道int佔幾個位元組時候
[java] view plaincopyprint?- int getMaxInt(){
-
return ((unsigned int) - 1) >> 1;//2147483647
- }
2.獲得int型最小值
[java] view plaincopyprint?- int getMinInt(){
- return1 << 31;//-2147483648
- }
另一種寫法
[java] view plaincopyprint?- int getMinInt(){//有些編譯器不適用
- return1 << -1;//-2147483648
- }
C語言版
[java] view plaincopyprint?- long getMaxLong(){
- return ((unsigned long) - 1) >> 1;//2147483647
- }
- long getMaxLong(){
- return ((long)1 << 127) - 1;//9223372036854775807
- }
4.乘以2運算
[java] view plaincopyprint?- int mulTwo(int n){//計算n*2
- return n << 1;
- }
- int divTwo(int n){//負奇數的運算不可用
- return n >> 1;//除以2
- }
- int mulTwoPower(int n,int m){//計算n*(2^m)
- return n << m;
- }
- int divTwoPower(int n,int m){//計算n/(2^m)
- return n >> m;
- }
- boolean isOddNumber(int n){
- return (n & 1) == 1;
- }
C語言版
[java] view plaincopyprint?- void swap(int *a,int *b){
- (*a) ^= (*b) ^= (*a) ^= (*b);
- }
- a ^= b;
- b ^= a;
-
相關推薦
優秀程式設計師不得不知道的20個位運算技巧
原文地址:http://blog.csdn.net/tender001/article/details/8542975 一提起位運算,人們往往想到它的高效性,無論是嵌入式程式設計還是優化系統的核心程式碼,適當的運用位運算總是一種迷人的手段,或者當您求職的時候,在程式碼中
【轉】優秀程式設計師不得不知道的20個位運算技巧
———————————————————————————————————————————— 一提起位運算,人們往往想到它的高效性,無論是嵌入式程式設計還是優化系統的核心程式碼,適當的運用位運算總是一種迷人的手段,或者當您求職的時候,在程式碼中寫入適當的位運算
不得不知道的20個位運算技巧
================================================================================================== 作者:nash_ 歡迎轉載,與人分享是進步的源泉! =====================
程式設計師不得不知的20個位運算技巧
雖然寫的是原創,實際上是轉載,優秀的博文,我總想不讓他被埋沒。博文最後有轉載地址 一提起位運算,人們往往想到它的高效性,無論是嵌入式程式設計還是優化系統的核心程式碼,適當的運用位運算總
初級程式設計師不得不知道的東西
tcp的三次握手和四次揮手 tcp的十種狀態 Java中的基於tcp協議的socket通訊(服務端) Tcp服務端(第一個版本) /** * Socket的服務端 * *當前程式有弊端 只能為
想成為一名優秀程式設計師 要知道哪些必備技能
想成為一名優秀程式設計師,要知道哪些必備技能?在這個世界上,有數百萬的人熱衷於軟體開發,他們有很多名字,如:軟體工程師(Software Engineer),程式設計師(Programmer),編碼人(Coder),開發人員(Developer)。經過一段時間後,這些人
C/C++的20個位運算技巧
n) iss 奇偶性 tools light ofo 一起 comment view 一提起位運算,人們往往想到它的高效性,無論是嵌入式編程還是優化系統的核心代碼,適當的運用位運算總是一種迷人的手段,或者當您求職的時候,在代碼中寫入適當的位運算也會讓您的程序增加一絲亮點,最
成為一名優秀程式設計師所需要知道的15件事
1. 懂得分享。儘可能使用開源,並且當你有能力的時候,要對其有所貢獻。聚全社會之智慧,勝過某些“大”公司之短視。 2. 公平競爭。嘗試其他技術、框架、方法和觀點。不要總以為只有你的選擇才是可行的。別的選擇也有可能比你的要強得多。要以開放的心態,來檢驗其他人的選擇。
前端新手程式設計師不知道的 20個小技巧
1.作為前端開發者,使用雙顯示器能大幅提高開發效率。2.學程式設計最好的語言不是PHP,是Eng
Java程式設計師應該知道的20個有用的lib開源庫
一般一個經驗豐富的開發者,一般都喜歡使用開源的第三方api庫來進行開發,畢竟這樣能夠提高開發效率,並且能夠簡單快速的整合到專案中去,而不用花更多的時間去在重複造一些無用的輪子,多瞭解一些第三方庫可以提高我們的開發效率,下面就來看一下在開發過程中經常會用到的一些開發第三方庫,也可能不是太全,就列舉一些常見或者常
前端程式設計師不知道的14個JavaScript除錯技巧,你知道幾個?
技術領域總是充滿著神祕的未知和挑戰,有趣又令人不能自拔。就像 Java,即使是每天使用它進行開發互動的開發人員,而語言的某些部分仍然未被開發。 瞭解工具可以使工具最大限度的幫助你完成任務。儘管Java的除錯非常麻煩,但在掌握了技巧 (tricks) 的情況下,依然可以用盡量少的的時間解決這些錯誤
一個優秀程式設計師的自我修養
對於網路推廣來說,必然少不了代理IP的使用,像論壇發帖、微博推廣、百度問答等等,如果你想看到效果,就需要大量操作,但是同一個IP重複操作,必然會受到限制,這個時候必須使用代理IP比如太陽IP軟體的幫助,將效率和效果最大化。 當然這只是推廣過程中的一小部分,如果你想更好的去操作,就要多掌握一些操作技巧,這樣才
優秀程式設計師應該具備的12種能力
1. 程式語言能力 不用多說,作為合格的計算機程式設計師,精通一門語言是必須的。這種精通,不是說看了一本程式設計寶典,抄了幾個程式就能說精通的,要靠長時間的積累。 2.編碼能力 我曾經看很多程式設計師寫的程式碼,在同一個jsp或者java原始檔裡,出現了三種以上的對方
PHP程式設計師必須知道的兩種日誌
前言 作為一名程式設計師,比碼程式碼還重要那麼一點點的東西就是日誌的分析和查詢。下面列出常見日誌及設定方法。 php-fpm 慢日誌 php慢日誌需要在php-fpm.conf設定,如果使用原始碼包安裝預設請執行下面命令 cp php-fpm.conf.default php-fpm.conf 預
初級程式設計師需要知道的基本程式碼規範
1.【強制】大括號的使用約定。如果是大括號內為空,則簡潔地寫成{}即可,不需要換行;如果是非空程式碼塊則: 1) 左大括號前不換行。 2) 左大括號後換行。 3) 右大括號前換行。 4) 右大括號後還有 else 等程式碼則不換行;表示終止的右大
Java開發程式設計師必須知道
前言 在這個行業參加工作4年到5年的攻城獅的朋友們,相信你在自己所鑽研的領域已經有了自己一定的見解,這個時候,技術上你應該已經遇到瓶頸了。這個時候不要著急提高自己的技術,已經是時候提高你的影響力了,你可以嘗試去一些知名的公司去提高你的背景,你可以發表一些文章去影響更多的人。 當然,你也可以去
java程式設計師應當知道的10個面向物件設計原則
面向物件設計原則是OOPS程式設計的核心, 但我見過的大多數Java程式設計師熱心於像Singleton (單例) 、 Decorator(裝飾器)、Observer(觀察者) 等設計模式,而沒有把足夠多的注意力放在學習面向物件的分析和設計上面。學習面向物件程式設計像“抽象”
懂得這40條程式設計箴言才稱得上優秀程式設計師
1、重構是程式設計師的主力技能。 2、工作日誌能提升腦容量。 3、先用profiler調查,才有臉談優化。 4、註釋貴精不貴多。杜絕大姨媽般的“例注”。漫山遍野的碎碎念註釋,實際就是背景噪音。 5、普通程式設計師+google=超級程式設計師。 6、單元測試總是合算的。
為什麼程式設計師需要知道網際網路行業發展史
相關宣告:寫這篇文章絕不是為了抹黑《極客時間》,相反我相當看好這個產品,並願意為它的成長貢獻一份自己的苦藥。在《極客時間》剛一推出時,我便寫了文章《「極客時間」帶來的社群價值思考》來論述我看好它的原因。《極客時間》的很多專欄我都購買過,如果是純黑,犯不著花費這麼多錢去囤積專欄。 《極客時間》上有一款很異
優秀程式設計師應具備的自我修養
態度篇 1. 做實事 不要抱怨,發牢騷,指責他人,找出問題所在,想辦法解決。對問題和錯誤,要勇於承擔。 2. 欲速則不達 用小聰明、權宜之計解決問題,求快而不顧程式碼質量,會給專案留下要命的死角。 3. 對事不對人 就事論事,明智、真誠、虛心地討論問題,提出創新方案。 4