아래에서 위로 이진 트리를 가로 질러 가고 싶습니다.비트 연산, 비트 저장, 8 비트 이후 확장
그럼이 traversion (= the way)의 bitsequence를 char에 저장하고 싶습니다.
내가 이상 8 비트 bitsequence있는 경우, 숯 동적 그래서, 예를 들면, 2 바이트를 확대되어야하므로이 동작은 동적이어야 ....
bitsequence가 있으면 예 1001010 정확히 같은 비트 시퀀스를 char 안에 저장하고 싶습니다.
비트 시프트 연산자 < < >>을 사용해야한다고 알고 있지만, 정확히 수행 할 수있는 정확한 방법은 알아낼 수 없습니다.
나는 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++;
}
두 개의 문자가 있으면 비트 시프트는 첫 번째 (즉, 하위 바이트)에서만 작동합니다. 직접 비트 시프트 논리를 수동으로 구현해야합니다. –
'realloc' 후에'free'를하지 마십시오. – imreal