位操作,保存位,8位后扩展

时间:2012-12-05 23:08:25

标签: c bit-manipulation

我想从底部到顶部遍历二叉树。

然后我想在char中保存这个traversion(= the way)的比特序列。

这种行为应该是动态的,所以如果我的序列序列超过8位,则应该动态扩展char,例如2个字节等等......

如果比特序列是例如1001010,我想要存储完全相同的比特序列 在char里面。

我知道我应该使用bitshift运算符<< >>但我无法弄清楚 正确的方法。

我在char中写了8位后遇到了问题。

我附上了一些示例代码,希望有人可以解释一下。

由于

char* bits = malloc(sizeof(char));
char* temp_bits = NULL;

some loop
{
  if (cnt_bit > 7)
  {
    temp_bits = realloc(bits, sizeof(char)*2);
    free(bits);
    bits = temp_bits;
  }
  *bits = *bits << 1;
  *bits = *bits | 0;
  cnt_bit++;
}

1 个答案:

答案 0 :(得分:1)

您无法从一个内存值转移到下一个内存值!如果你想这样做,你可以尝试使用64位正常的“long long int”类型,但我不认为你可以比使用shift更进一步,除非你实现自己的移位操作,它适用于泛型阵列。

我认为通过每个级别使用一个字节,你所做的事情会快得多。