這兩天的一些筆試題

2021-06-10 03:29:02 字數 1099 閱讀 1023

迅雷的一道題目

求\t\r\\t\0345\r字串的長度

這個問題看過很多遍了,有的時候覺得是顯而易見的,但是其實根本就沒完全明白。。

方法一:

int func(int n)

這個演算法的每一次迴圈將會去掉最右邊的乙個1,直到n為0!

方法二:

unsigned int func(unsigned int x)

這個演算法理解起來很難,想了好長時間,計算1的個數是利用二分的方法,將所有位元遞迴相加,可以看到,首先是偶數字元和奇數字元相加,如果1的位元組在最後兩個位元上的話,那麼這就足夠計算1的個數了,但實際上高位可能存在1,所以將這個過程持續下去,第二次就將相鄰兩個位元組成乙個組,同樣將奇陣列和偶數組相加,這樣下去,所有高位的計數最後就合併到低位計數上了。

+---+---+---+---+---+---+---+---+

| 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 |   <---原數

+---+---+---+---+---+---+---+---+

|   1 0   |   0 1   |   0 0   |   1 0   |   <---第一次運算後

+-------+-------+-------+-------+

|     0 0 1 1     |     0 0 1 0     |   <---第二次運算後

+---------------+---------------+

|         0 0 0 0 0 1 0 1         |   <---第三次運算後,得數為5

+-------------------------------+

整個程式是乙個分治的思想。第一次我們把每相鄰的兩位加起來,得到每兩位裡1的個數,比如前兩位10就表示原數的前兩位有2個1。第二次我們繼續兩兩相加,10+01=11,00+10=10,得到的結果是00110010,它表示原數前4位有3個1,末4位有2個1。最後一次我們把0011和0010加起來,得到的就是整個二進位制中1的個數。程式中巧妙地使用取位和右移,比如第二行中$33333333的二進位制為00110011001100....,用它和x做and運算就相當於以2為單位間隔取數。shr的作用就是讓加法運算的相同數字對齊。

這兩天的想法

你太感性了 這是昨天和乙個老朋友 聊天時,她對我的評價。我的確很感性,以至於很多時候,我看那種比較感人的電影都會流淚。這沒有什麼不好,至少我這樣認為。我的煩惱是 雖然我是乙個很感性的人,可是在某些需要感性的時候,我卻表現得太理性。team裡乙個新來的mm對我說 咱們公司裡的女生,很多都自信得有點過頭...

這兩天的工作

這兩天是週末,一直在看關於arm和embedded system的書。tsinghua小杜的那本書實在是錯誤太多了。好象沒有經過任何的校對就拿來出版了。時不時就過來幾個莫名其妙就出來乙個暫存器得符號!我敢和你打賭絕對是他錯了,看來有必要在我得blog幫他出個勘誤表了。還有昨天晚上用了3個小時的時間來...

這兩天的狀態。

星期一,2005年10月17號,我跟我們公司的頭說,我辭職。事實上我也盡力的在用自己的忍耐和我的性格做鬥爭。我無法忍受乙個這樣的公司,老闆的固步自封,老闆把企業的倫理都踐踏了,家族企業的通病,根本沒什麼團隊合作,團隊精神可言,無論什麼事,你只要按著頭的意思去辦就行。毫無歸屬感,從來沒有被尊重的感覺。...