2019-12-16 22:37发布
gamalot 发表于 2016-1-31 23:23 或者先向左移8位,再除以256 这样不需要判断,看上去很有技巧的样子,逼格略高
gamalot 发表于 2016-1-31 23:37 你这个实际上就是最常用的方法,最简洁高效,缺点和就是更加不够直观 ...
zouzhichao 发表于 2016-1-31 23:40 int32_t code; code = Adc_read_data(); code = (int32_t)(((uint32_t)code) >= 8;
gamalot 发表于 2016-1-31 23:54 老糊涂了俺,看见你的语句最后有个1,就以为是最近本的负数补码转源码算法,取反加一 ...
zouzhichao 发表于 2016-2-1 00:07 我就是把你的那个if化简了而已 (code & 0x800000)无非两个结果,0或者0x800000 0: code -= 0
最多设置5个标签!
int32_t code;
code = Adc_read_data();
code = (int32_t)(((uint32_t)code) << 8);
code >>= 8;
这里的移位需要用到强制转换或者使用union吧?
哈哈,习惯就好
不用阿,左移的时候,它其实就是个正数
而且,C语言左移一定是逻辑左移(如果俺没记错的话 )
我就是把你的那个if化简了而已
(code & 0x800000)无非两个结果,0或者0x800000
0: code -= 0
0x800000: code -= 0x1000000
0 = 0 << 1;
0x1000000 = 0x800000 << 1;
化简就成了code -= (code & 0x800000) << 1;
是的,俺刚才没看的仔细,俺这里凌晨3点多了 ......
你这个很好,就是看起来不够直接而已
一周热门 更多>