推 parking111:GJ 12/20 20:01
推 hikaru677:超專業<(_ _)> 12/20 20:34
推 genius945:推 12/20 20:37
推 ilovebbs:解法3好酷....XD 12/20 21:37
推 thinkniht:我覺得要當一個好的演算法工程師最重要的是邏輯能力 12/20 22:15
→ thinkniht:不過有時一個演算法職缺,並不一定真的需要... 12/20 22:16
→ thinkniht:好的演算法工程師XDDD(不知是否有人能理解我的意思...) 12/20 22:17
→ ken1325:不懂樓上的意思 12/20 22:51
推 bxxl:實際上是看當時找得到怎樣的人就用吧,也不一定要很好的人. 12/20 23:44
推 KiroKu:解法三 為何i起始值不是n? 12/20 23:51
→ leav:因為那個i只是個bit mask, 從32-bit int的MSB開始掃 12/21 00:12
推 eterbless:演算法除非真的上戰場 不然很多都可以嘴砲XD 12/21 00:37
推 amozartea:解法二才是數學...解法三根本是insane... 12/21 13:59
推 wzbird:我也覺得三在定義上不算"演算法" 只能說是寫程式的技巧 12/21 14:22
→ wzbird:不過或許業界定義的演算法跟書上的不盡相同吧 12/21 14:23
推 amozartea:那不是演算法 是偷吃步.... 12/21 14:24
→ amozartea:>>1和/2在演算法上並沒有差別 但在機器上有差... 12/21 14:24
推 genius945:小弟資質努頓....有人可以說一下3的想法嗎= =+ 12/21 14:25
→ amozartea:我每次看到解法三這種code都很想殺人..硬體公司一堆這種 12/21 14:25
→ amozartea:有個int要乘0.3(不用到float) 正常解:寫*3/10 12/21 14:26
→ amozartea:加速解 * 77 >> 8 , 12/21 14:26
推 wzbird:我覺得業界會喜歡這樣寫是有他的必要, 因為就是比較快 12/21 14:34
→ wzbird:業界比人家快就是強, 但是要稱"演算法"比較值得商榷 12/21 14:34
→ wzbird:還要配合平台有什麼HW的話就只是單純程式的技巧了 12/21 14:36
→ wzbird:少第三句XD "我認為演算法應該是用紙筆就可以推導的" 12/21 14:37
→ leiyan:乘除法最後還是要變成加減法的動作 不值得捨棄維護性 12/21 15:23
推 azureblaze:>>1 /2 compiler應該會幫你處理好吧 12/21 16:20
→ azureblaze:沒事不要覺得自己optimize會比compiler強 12/21 16:21
→ azureblaze:而且這不是profile出來的瓶頸,就只是找維護的人麻煩 12/21 16:22
推 fantoccini:回應樓上: 原po有說如果平台不支援 乘除指令 12/21 18:58
→ fantoccini:如果是HW 的確是要自己轉 /2 = >>1 12/21 18:59
推 snaketsai:不要跟Compiler作對...... 12/21 19:55
→ azureblaze:不支援指令理論上compiler也要幫你想辦法 12/21 21:29
→ azureblaze:就像沒有FPU還是得幫你做慢到爆的軟體浮點 12/21 21:30
→ azureblaze:至少乘除換位移應該是基礎最佳化功能 12/21 21:32
→ azureblaze:除非你用的是什麼不支援乘除的奇妙語言 12/21 21:32
推 fantoccini:做硬體的演算法就沒啊 必須把乘除法器換成位移運算 12/21 21:50
→ fantoccini:每一個乘除法器 對硬體都是成本考量 12/21 21:51
推 fantoccini:做硬體的思維和軟體不同 12/21 21:54
推 gpmm:看到討論演算法的文章,就不禁想到前幾個月的雷神之鎚 3 12/21 22:49
推 bxxl:做硬體根本也不用shift,接線直接錯開1bit 12/21 23:12
推 nhtyjm:好的演算法工程師在台灣領多少? 12/22 00:22
推 snaketsai:我覺得bitwise很難維護= ="如果單純只是要測效能,也許 12/22 01:32
→ snaketsai:OK,但是真的用在開發當中會讓夥伴很累@@ 12/22 01:33
→ PEIRON:To gen: 解法三就是把小學教的直式乘法實做出來 12/22 10:46
→ PEIRON:只不過是二進位版本 12/22 10:46
推 LaPass:難維護就難維護,反正是包在底層,上面的人看不到啊..... 12/22 11:36
→ genius945:後來看懂了= ="感謝,比較少摸底層硬體很少看這種寫法= = 12/22 13:59
推 xyziscariot:GJ 這才是專業的!! 12/22 16:30
推 FukadaKyoko:為啥我把解法3跑起來答案不是5050啊? = =?! 12/22 16:46
→ FukadaKyoko:設置是i為int, sum為int初始0 12/22 16:47
→ lovdkkkk: i 右移時左側會補 1 或補 0 不一定, 答案會不一樣 12/22 18:47
推 funkastic:有趣~ 12/22 19:02
→ PEIRON:右移通常都是補0吧~ Fuka 你不要一下子就n代100呀,試試n=3 12/22 20:33
→ PEIRON:然後手算一次,不要真的去寫程式算(因為寫錯難debug) 12/22 20:36
推 ggx1030:這種優化是編譯器該做的事,可讀性高易維護比較重要 12/22 22:32
→ uranusjr:無號和有號的補法不一樣, 使用位移的時候請愛用無號數 12/23 14:45
推 FukadaKyoko:我的跑起來是補1 XD vs2008 12/24 17:13
→ FukadaKyoko:了解了 因為我用的是int~ 12/24 17:13
→ FukadaKyoko:我再守算看看 感謝各位大大XD 12/24 17:13
推 ku399999:寫底層就不一定是維護性至上了吧,一定有些地方需要取捨 12/29 18:46
→ ku399999:不然上層寫了稍差一點就慢到破表了 12/29 18:46