TransWikia.com

Разделить long long на две части (Старшая - long) и (Младшая - unsigned long)

Stack Overflow на русском Asked by Sanlover on February 3, 2021

Догадываюсь, что провернуть данную операцию возможно с помощью побитового сдвига, но как – не совсем понимаю. Буду очень признателен, если найду ответ.

Пример того, как это должно работать в моём представлении.

std::pair<long,unsigned long> detach(const long long& _Value) {
    long high = _Value << 32;
    unsigned long low = _Value << 32;

    return std::pair<long,unsigned long>(high,low);
  }

One Answer

При распространенном варианте - long long - 64 бита, long - 32 -

std::pair<long,unsigned long> detach(const long long& _Value) {

    long high = _Value >> 32;
    unsigned long low = _Value &0xFFFFFFFF;
    return std::pair<long,unsigned long>(high,low);
}

Варианты могут быть и другие, но это вряд ли - потому что, например, при равенстве long и long long по размеру сложно говорить о старшей и младшей части, правда? :)

Но в общем случае можно воспользоваться оператором sizeof(). Только как именно поступать в том или ином случае - это уже другой вопрос...

Answered by Harry on February 3, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP