• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

有没有快速把unit8_t类型变量的低n位快速置1的方法

jliot 2019-01-23 浏览量:760

n的取值范围是1到8。如果n取1,结果是0x01,n取2,结果是0x03,n取3,结果是0x07,n取4,结果是0x0f……

我能想到的首先是用循环的方法做:

uint8_t result = 0;

for (i = 0; i < n; i ++) {

    result |= (1 << i);

}

有没有不用循环的方法快速实现?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • list[8]=[0x010x030x070x0f0x1f0x3f0x7f0xff]

    uin8_t set (uint8_t n)

    {

        return list[n-1]

    }

    • 发布于 2019-01-23
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:10
  • 一共是9种可能,查表也行

    list[]={0x00x10x30x70xf0x1f0x3f0x7f0xff}

    Result=list[i]

    • 发布于2019-01-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 数据量不大的情况下,可以通过查表的方式。也可以通过公式迭代计算。最简单的应该还是通过移位计算。
    • 发布于2019-01-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 查表比较快速,函数都不要,免得压栈弹栈操作浪费时间,查表直接去内存读取数据,很快。
    • 发布于2019-01-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 常用的方式就是用查表,把对应的数据做一个表来进行查找处理
    • 发布于2019-01-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个可以直接用移位符号|结合int型数字,比如int sum|=(1<<2)
    • 发布于2019-01-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以使用查表,直接读取数据
    • 发布于2019-02-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 一般都是用的数字的方式来调用的,用接口查找数据
    • 发布于2019-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 直接查表,用查表的方式比较简单
    • 发布于2019-02-28
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

有没有快速把unit8_t类型变量的低n位快速置1的方法