看板 C_and_CPP 關於我們 聯絡資訊
各位好,我在看成大資工進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明 http://fr.slideshare.net/jserv/embedded2014 裏面有兩個c基本問題: 1. 只能使用邏輯運算子和遞迴,在C程式中實做兩個整數的加法 void add(int a, int b) { ... } 2. 使奇偶位的位元相互交換,儘量用最短的程式碼 (bit 0 <-> bit 1; bit 2 <-> bit 3; bit 4 <--> bit 5 以此類推) #include <stdint.h> int32_t swap_even_odd_bits(uint32_t x) { ... } 在下雖然出社會多年但是居然對這種題目完全沒頭緒.... 可以請高手指點該如何做嗎? (不需要完整解答亦可,但是拜託來點hint...) 感謝感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 90.41.3.11 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1420055026.A.BC0.html
CaptainH: 第一題是要做個加法器? 01/01 03:45
wtchen: 似乎是不能有"+"的加法器... 01/01 03:58
BombCat: http://ideone.com/ryZl63 不推,不要浪費時間去上比較好 01/01 08:36
carylorrk: 學過數位邏輯的加法器嗎 01/01 09:06
LiloHuang: int add(int a, int b) { 01/01 11:17
LiloHuang: if (b == 0) return a; 01/01 11:17
LiloHuang: return add(a ^ b, (a & b) << 1); 01/01 11:17
LiloHuang: } // 第一題是很常見的考題 01/01 11:17
PoorLoser: 用組語寫,咬我啊 01/01 11:55
descent: 永遠都有難倒人的題目 01/01 13:22
tubbysong: (某數 & 0x010101)就抽出奇數位元,<<左旋 01/01 13:59
fireslayer: 第二題看起來可以一行解決 01/01 16:51
LiloHuang: 第二題的一行解已經在 BombCat 貼的連結內了 01/01 17:03
LiloHuang: 取出奇數位得使用 0x55555555,得用 0b 才是二進制表示 01/01 17:06
tubbysong: add numbers without plus operator 01/01 19:55
carylorrk: 0x010101 是 0b010101 才對吧XD 01/01 22:56
cpper: 這種和現實工作脫節的題目根本不用浪費時間去寫它 01/02 04:00
kikiqqp: 如果你的工作是寫組語貨單晶片,這根本沒有脫節 01/02 22:11
x000032001: 看一下推文 再看一下誰開的課 恩... 01/02 23:18
uranusjr: 只好召喚老師踹共了 01/02 23:51
wtchen: 我只想問個問題,為啥^和&算是邏輯運算子? 01/03 01:46
wtchen: 我印象中&和^不是位元運算子嗎? 01/03 01:49
LPH66: 對位元做邏輯運算 01/03 01:50
jserv: 課程說明已說,鎖定的對象是高產值的工作職務和研究議題 01/03 08:33
jserv: 當然不是為了 8051 等級或者組裝軟硬體就能出貨的工作 01/03 08:34
jserv: 我在業界工作十餘年,感覺太多人故步自封,出這些題目, 01/03 08:36
jserv: 只是讓同學們思考不一樣的切入點,當然,這顯然不是最有效 01/03 08:37
jserv: 的學習方式,但大學教育本來就是多元,我們有責任讓學生 01/03 08:37
jserv: 體驗到嵌入式系統的多個面向,並且勉勵同學探究高產值的 01/03 08:38
jserv: 的公司或研究單位,到底都在關注哪些議題 -- by 授課教師 01/03 08:39
jserv: 資訊科技產業面試模擬和工作咨詢收錄了相關的題目和面試 01/03 08:43
jserv: 策略的建議,歡迎各位朋友善加使用,大家多交流學習 01/03 08:43
jserv: @wtchen: 感謝指正,這簡報用詞不精確,燒後會修正 01/03 08:46
EdisonX: jserv 好有心 01/03 08:49
tubbysong: 還不錯的腦力激盪,期待更多題目分享 01/03 12:32
LiloHuang: 推 jserv 大神 01/03 14:35
kikiqqp: 推文召喚到宅色夫 XD 01/03 15:11
tjjh89017: 老師好<(_ _)> 01/03 17:32
sa074463: 真的召喚到老師了... 01/03 19:38
HowLeeHi: 說神來,神就來了... 01/04 22:13
wtchen: 老師好,請問有打算弄成開放式課程或放上coursera嗎? 01/05 18:24
wtchen: (身為社會人士很難去旁聽阿...) 01/05 18:25
wtchen: 如果需要經費,我雖然家無恆產但是願意盡棉薄之力 01/05 18:30
KoenigseggG: 原po要不要直接寄信問看看?slides第一頁有email~ 01/05 23:46
KoenigseggG: 這問題其實很多人都有在FB上問過XD 01/05 23:46
CP64: 剛剛試著寫過一次發現居然對了.... 好感動 (? 01/07 01:08
CP64: 想問一下 return b == 0 ? add( a^b, a&b) : a^b ; 01/07 01:27
CP64: 更正 != 01/07 01:42
CP64: 這樣的寫法好嗎 @@? 01/07 01:42
CP64: 糟糕 測試不夠 現醜了 QQ 01/07 01:48
CP64: return b == 0 ? a|b : add( a^b, (a&b)<<1); 01/07 02:14