作者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
1F:→ Anonymoux:val = 1 - val; 这样如何? 12/10 23:20
2F:推 TroyLee:习惯就好,写MCU比较在乎空间..毕竟不是像server有个4G ram 12/11 00:14
3F:→ andymai:只能说有的人并不能接受这样的写法~因为不够"直觉"... 12/11 00:24
4F:推 iamso1:哈 我直觉是用^说 XD 12/11 02:04
5F:推 chrisQQ:^ +1 12/12 01:11
6F:推 QCANCER:^ +1 12/28 11:20