-1
#include <stdio.h>
#include <stdint.h>
struct __attribute__((__packed__)) sf_header
{
uint64_t lower: 32;
uint64_t higher: 32;
};
int main()
{
struct sf_header h;
// part 1;
h.lower = 15;
h.higher = 1;
printf("lower part: %d\n", h.lower);
printf("higher part: %d\n", h.higher);
//part 2: how to printf the whole 64-bits (a row)
unsigned long int lower = h.lower;
unsigned long int higher = h.higher;
higher = higher << 32;
printf("lower: %ld\n", lower);
printf("higher: %ld\n", higher);
unsigned long int final = lower | higher;
printf("Final: %ld\n", final);
return 0;
}
64 비트에서 실행되며 long int는 8 바이트 크기의 행입니다.비트 필드를 사용하여 전체 행 비트를 얻는 방법은 무엇입니까?
먼저 하위 32 비트와 상위 32 비트에 두 값을 할당합니다.
64 비트를 가져와 사용하려면 어떻게해야합니까?
파트 2를 수행해야합니까, 아니면 비트 필드를 사용하는 쉬운 방법이 있습니까?
'합집합'이란? –
당신이'uint64_t'를 알고 그것을 부분적으로 사용하는 이유가 무엇이든간에 64 비트를 보장하지 않는'unsigned long'을 사용하는 이유는 무엇입니까? 그리고 왜'uint64_t' 타입을 직접 출력하지 않습니까? 'inttypes.h'에 대해 알고 있습니까? – Olaf
"64 비트를 가져와 사용하려면 어떻게해야합니까?" 성취하고자하는 것은 무엇입니까? – SGM1