取整数n个数并设置第n位的函数

时间:2011-12-02 16:54:06

标签: c bit-manipulation

我想编写一个如下所示的函数。我想在整数中设置第n位。例如,我想在数字8中设置第6位。

#include<stdio.h>
int set_bit(int number , int postion);

int main()
{
   int a;
   a=(8,6);
}

int set_bit(int number , int position)
{
   number = number |(1<<position);
}

上述功能无效。谁能纠正我?

3 个答案:

答案 0 :(得分:5)

两个问题:

  1. 您没有致电该功能:a=(8,6)应该阅读a = set_bit(8, 6)

  2. 您没有从函数返回值:number = number |(1<<position)应该阅读return number | (1 << position)

答案 1 :(得分:2)

您可能希望返回number,因为参数是按C 中的值传递的。因此,简单地修改函数内的number对调用者没有任何影响。

正如ruakh在评论中提到的,调用函数的语法不正确。

尝试:

int set_bit(int number , int position)
{
    return number | (1 << position);
}

/* ... */

a = set_bit(8, 6);

作为旁注:您确定单行代码需要单独的功能吗?

答案 2 :(得分:-2)

return number|(1<<position)”是否适用于所有情况

如果position位已经设置且我们再次尝试设置position位,则(position+1)位会发生溢出...