我想从底部到顶部遍历二叉树。
然后我想在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++;
}
答案 0 :(得分:1)
您无法从一个内存值转移到下一个内存值!如果你想这样做,你可以尝试使用64位正常的“long long int”类型,但我不认为你可以比使用shift更进一步,除非你实现自己的移位操作,它适用于泛型阵列。
我认为通过每个级别使用一个字节,你所做的事情会快得多。