[心得] 分享0/1反轉的技巧
我寫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
→
12/10 23:20, , 1F
12/10 23:20, 1F
推
12/11 00:14, , 2F
12/11 00:14, 2F
→
12/11 00:24, , 3F
12/11 00:24, 3F
推
12/11 02:04, , 4F
12/11 02:04, 4F
推
12/12 01:11, , 5F
12/12 01:11, 5F
推
12/28 11:20, , 6F
12/28 11:20, 6F