[心得] 分享0/1反轉的技巧

看板C_Sharp作者 (Tomex Ou)時間15年前 (2010/12/10 22:23), 編輯推噓4(402)
留言6則, 6人參與, 最新討論串1/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
val = 1 - val; 這樣如何?
12/10 23:20, 1F

12/11 00:14, , 2F
習慣就好,寫MCU比較在乎空間..畢竟不是像server有個4G ram
12/11 00:14, 2F

12/11 00:24, , 3F
只能說有的人並不能接受這樣的寫法~因為不夠"直覺"...
12/11 00:24, 3F

12/11 02:04, , 4F
哈 我直覺是用^說 XD
12/11 02:04, 4F

12/12 01:11, , 5F
^ +1
12/12 01:11, 5F

12/28 11:20, , 6F
^ +1
12/28 11:20, 6F
文章代碼(AID): #1D0ZVoGy (C_Sharp)