顺心鲜花

文章
8
资源
0
加入时间
3年1月13天

关于二进制左移、右移问题

昨天做点灯的程序突然出现了一个bug,LED为低电平点亮,我本想做一个灯顺着往下亮,但是每次都发现亮灯的数量是递增的,和我设想的不一样,我使用的是0xfe<<1的方法。如果我改成 ~(0x01<<1)的方法就是正确的。为什么会出现这种现象我觉得可能和二进制的左移右移有关。后来通过C语言程序验证经过两种方法验证后,可以看到如果二进制为 0000 0001,那么每次左移的结果就是 0000 0010,0000 0100……但是如果是 1111