• 把一个无符号16bit的数像镜面反射一样颠倒一下


    下面这个函数是把一个无符号16bit的数像镜面反射一样颠倒一下。

    该函数是NXP(飞思卡尔)的 S32DS IDE中提供的SDK中的一个官方代码:

     1 static inline uint16_t REV_BIT_16(uint16_t value)
     2 {
     3     uint8_t i;
     4     uint16_t ret = 0U;
     5 
     6     for (i = 0U; i < 8U; i++)
     7     {
     8         ret |= (uint16_t)((((value >> i) & 1U) << (15U - i)) | (((value << i) & 0x8000U) >> (15U - i)));
     9     }
    10 
    11     return ret;
    12 }

    使用S32DS创建普通的C语言的工程。选择CDT Internal Builer(否者编译会错误)。
    某数:
    ‭0b0001001000110100‬
    将该数颠倒以后:
    ‭0b0010110001001000‬

    另外还有比较特殊的set和clear:

    1     result_set |= (mask); /* bits setting using masking. when the bit in mask is 1, the corresponding bit is to be set */
    2     result_clear &= (~(mask)); /* bits clearing using masking. when the bit in mask is 1, the corresponding bit is to be cleared */
  • 相关阅读:
    P4168 [Violet]蒲公英
    P3320 [SDOI2015]寻宝游戏
    P2487 [SDOI2011]拦截导弹
    P3338 [ZJOI2014]力(FFT)
    P1975 [国家集训队]排队
    P4103 [HEOI2014]大工程
    虚树小结
    LVS初步
    常见指针定义解读
    可epoll队列
  • 原文地址:https://www.cnblogs.com/praiseslow/p/10380507.html
Copyright © 2020-2023  润新知