分享一则向上取整的技巧
时间:2021-12-07 14:29:34
手机看文章
扫描二维码
随时随地手机看文章
[导读]做底层或者说驱动开发时,经常会遇到一些硬件限制,比如STM32有些寄存器要求16bit访问、32bit访问,否则可能引发Hardfault中断;再比如擦除flash扇区时,会要求整块擦除。这些都是硬件决定的,必须这样做。假设我们需要32 bit访问一个地址dst时,如果要写入10...
做底层或者说驱动开发时,经常会遇到一些硬件限制,比如 STM32 有些寄存器要求 16 bit 访问、32 bit 访问,否则可能引发 Hardfault 中断;再比如擦除 flash 扇区时,会要求整块擦除。这些都是硬件决定的,必须这样做。
#define SIZE (4)
if((len % SIZE) != 0) // 判断是否整除{ len = len / SIZE 1;}else{ len = len / SIZE;}
for(int i = 0; i < len; i ){ dst [i] = src [i]; // 32 bit 访问} 我们可以看到,上面的写法是最容易想到的一种,也是新手最常写的,但是有经验的老手会怎么写呢?
#define SIZE (4)
len = (len SIZE - 1) / SIZE;
for(int i = 0; i < len; i ){ dst [i] = src [i]; // 32 bit 访问}
#define SIZE (4)
if((len % SIZE) != 0) // 判断是否整除{ len = len / SIZE 1;}else{ len = len / SIZE;}
for(int i = 0; i < len; i ){ dst [i] = src [i]; // 32 bit 访问} 我们可以看到,上面的写法是最容易想到的一种,也是新手最常写的,但是有经验的老手会怎么写呢?
#define SIZE (4)
len = (len SIZE - 1) / SIZE;
for(int i = 0; i < len; i ){ dst [i] = src [i]; // 32 bit 访问}