我想从底部到顶部遍历二叉树。然后我想将此遍历的位序列(=方式)保存在一个字符中。此行为应是动态的,因此,如果我的位序列超过8位,则应动态扩展char,例如2个字节,依此类推。如果位序列例如是1001010,我希望存储完全相同的位序列里面的字符。我知道我应该使用移位运算符>,但是我不太清楚正确的方法。在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++;} 最佳答案 您不能从一个内存值转移到另一个!如果您想这样做,可以尝试使用通常为64位的“ long long int”类型,但我认为您不能使用shift进行更进一步的操作,除非您实现可在通用类型上使用的自己的shift操作数组。我认为通过每个级别使用一个字节,您正在做的事情会更快。关于c - 位操作,保存位,8位后扩展,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13734184/
10-15 00:24