簡體   English   中英

訪問64位整數的下半部分

[英]Accessing lower half of a 64bit integer

如何使用C或C ++訪問64位整數的下半部分? 我可以在Assembly中輕松完成此操作,但對如何在C / C ++中執行操作一無所知

編輯:訪問上半部分怎么樣?

long long BigOne = 0x1234567890ABCDEFLL;
long long LowerHalf = BigOne & 0xFFFFFFFFLL;
long long UpperHalf = (BigOne >> 32) & 0xFFFFFFFFLL;

抱歉,如果十六進制文字需要一些前綴/后綴,我對C不太熟悉。請知道答案。

我以前使用過各種技巧來做到這一點。 使用工會,長班等。

如今,我只使用內存復制。 聽起來效率低下,但是上次我檢查了編譯器,將代碼優化的很好:

int32_t higher32 (unsigned long long arg)
{
  unsigned char * data = (unsigned char *) arg;
  int32_t result;
  memcpy (&result, data+4, sizeof (int32_t));
  return result;
}

int32_t lower32 (unsigned long long arg)
{
  unsigned char * data = (unsigned char *) arg;
  int32_t result;
  memcpy (&result, data+0, sizeof (int32_t));
  return result;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM