程式設計師面試寶典 x y x y 1

2021-07-01 20:33:54 字數 678 閱讀 7398

下面**:

int f(int x,int y)

f(729,271)=

解法:x&y是取相同的位與,這個結果是x和y相同位的一半,x^y是取不同的位,右移相當於除以2,所以這個函式的功能是取兩個數的平均值。

具體思路參考:

(x&y)+((x^y)>>1),把x和y裡對應的每一位(指二進位制位)都分成三類,每一類分別計算平均值,最後彙總。其中,一類是x,y對應位都是1,用x&y計算其平均值;一類是x,y中對應位有且只有一位是1,用(x^y)>>1計算其平均值;還有一類是x,y中對應位為0,無需計算。

具體的計算過程為:

第一部分,x,y對應位均為1,相加後再除以2還是原來的數,如兩個00001111相加後除以2仍得00001111;

第二部分,對應位有且只有一位為1,用「異或」運算提取出來,然後》1(右移一位,相當於除以2),即得到第二部分的平均值;

第三部分,對應位均為0,相加後除以2還是0,所以不用計算。

在彙編中,這種方法可以不產生高位溢位。

假設x,y均為unsigned char型別的資料(0~255,占用一位元組),顯然,x,y的平均數也在0~255之間,但如果直接x+y可能會使結果大於255,這就產生溢位,雖然最終結果在255之內,但過程中需要額外處理溢位的那一位,在彙編中就需要考慮這種高位溢位的情況,如果(x&y)+((x^y)>>1)計算則不會。

程式設計師面試寶典

據統計,80 的簡歷都是不合格的。不少人事管理者抱怨收到的許多簡歷在格式上很糟糕。簡歷應該如何做到在格式上簡潔明瞭,重點突出?求職信應該如何有足夠的內容推銷自己?如何控制長度,言簡意賅?相信讀了本章你會對簡歷的撰寫有乙個新的認識。2.1 簡歷注意事項 1 簡歷不要太長 一般的簡歷普遍都太長。其實簡歷...

《程式設計師面試寶典》摘記

簡歷注意事項 1.簡歷不要太長 中文簡歷壓縮在 2頁左右就可以把所有的內容突出了。一般來說學習經歷應該從大學開始寫起。2.如實填寫。3.不要過分謙虛,不要把自己的一切包括弱項都寫進去。4.求職簡歷上一定要註明求職的職位。根據所申請的職位來設計,突出你在這方面的優點。編寫乙份或者幾份有針對性的簡歷。5...

程式設計師面試寶典一

1 int i i 首先宣告乙個變數i,然後將變數i的值 未初始化 賦值給自己 2 下面 的意義 void func int x,int count 求乙個整數轉換為二進位制之後包含多少個1 3 printf在vc6.0下是自右向左運算的 好像跟編譯器有關 int arr int ptr arr p...