|
发表于 2023-5-8 15:08:52
|
显示全部楼层
为了简单直白一点方便大家都能看清楚,就不考虑处理8位数据的情况了,就假设 type 是一个4位宽的变量,初始化为0吧
先或再位移:- i=0, type=0000, sda=1 -> type|sda=0001, type<<1=0010
- i=1, type=0010, sda=0 -> type|sda=0010, type<<1=0100
- i=2, type=0100, sda=0 -> type|sda=0100, type<<1=1000
- i=3, type=1000, sda=1 -> type|sda=1001, type<<1=0010
复制代码
先位移再或:- i=0, type=0000, sda=1 -> type<<1=0000, type|sda=0001
- i=1, type=0001, sda=0 -> type<<1=0010, type|sda=0010
- i=2, type=0010, sda=0 -> type<<1=0100, type|sda=0100
- i=3, type=0100, sda=1 -> type<<1=1000, type|sda=1001
复制代码
《因此,这两种代码顺序的结果是等价的,不会影响读取的数据》 |
|