Разделить long long на две части (Старшая - long) и (Младшая - unsigned long)
Догадываюсь, что провернуть данную операцию возможно с помощью побитового сдвига, но как - не совсем понимаю. Буду очень признателен, если найду ответ.
Пример того, как это должно работать в моём представлении.
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);
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
При распространенном варианте - 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(). Только как именно поступать в том или ином случае - это уже другой вопрос...