使用位运算符分割两个数字

时间:2012-02-17 23:03:28

标签: c bit-manipulation

假设我有一个变量:

int n = 23;

可以拆分它,并转换为:

int x = n ?? ??; //2
int y = n ?? ??; //3

不知道该怎么做。非常感谢任何帮助。提前谢谢。

3 个答案:

答案 0 :(得分:6)

没有必要为此使用位运算符。实际上,由于位运算符使用数字的二进制表示,它们通常对基数10计算没有好处。

int n = 23;
int x = n / 10;
int y = n % 10;

答案 1 :(得分:1)

您可以使用循环来获取每个值。当然,你必须以不同的方式跟踪x,但我认为这对你有用。

while (n != 0)
{
    x = n % 10;
    n = n / 10;
}

答案 2 :(得分:0)

使用libc库的不同方法。 ..还有其他人。

 int *
 val2arr(int *arr, const int val)
 {
       char tmp[32]={0x0}; // more than digits in LONG_MAX on 64 bit
       char *p=tmp;
       int *i=arr;
       sprintf(p, "%d", val);
       for(; *p; i++, p++ ) 
           *i=*p - 48;
       *i=-1;          // mark end with -1
       return arr; 
 }