作者tomex (Tomex Ou)
看板C_Sharp
標題[心得] 分享0/1反轉的技巧
時間Fri Dec 10 22:23:43 2010
我寫code很強調可讀性,一開始寫web時寧可犧牲效能,
也要讓人容易理解程式碼。
今年跳去寫MCU(微控制器),要大量寫C及bit操作
在這領域看別人寫的code佔98%,自己只能從sample中作點變化
覺得有些bit操作技巧很簡潔,應用到上層c#也不錯。
1. 判斷奇偶數:
直覺會用%餘數來判斷,但可以直接:
if (val & 0x01 == 0x01) // 奇數
{
// 若為0x00為偶數,此法比%餘數效能較快。
}
2. 0與1互換:
雖然c#用true/false來判斷,但它函數回函寫int還是比較可變化
尤其寫ui程式,會大量用到狀態控制來切換,有時候要讓0與1互換
直覺會用絕對值 val = Abs(val - 1);
不過可以用:
val ^= 0x01; // ^為互斥運算子
初看會覺得把程式搞複雜了,不過裏頭一些bit觀念還不錯
但記住寫這類的code,行尾加上註解是必要的
畢竟自己的學習所得,不可成為別人負擔。
底層的code都是隱晦不明的,define值一大堆
不過看別人的code真的是一種學習,有時覺得在浪費時間
有時能猜測出別人程式碼的input與output值,
無形中能更迅速拿別人的成果來達成自己目的。
不爽別人亂寫程式的同時,有時候轉化成擷取他人成果的想法
會比較正面些。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.117.1
→ Anonymoux:val = 1 - val; 這樣如何? 12/10 23:20
推 TroyLee:習慣就好,寫MCU比較在乎空間..畢竟不是像server有個4G ram 12/11 00:14
→ andymai:只能說有的人並不能接受這樣的寫法~因為不夠"直覺"... 12/11 00:24
推 iamso1:哈 我直覺是用^說 XD 12/11 02:04
推 chrisQQ:^ +1 12/12 01:11
推 QCANCER:^ +1 12/28 11:20