Если вам не нужна переносимая версия, вы можете злоупотреблять информацией о том, что целые числа почти всегда равны 4 байтам.
return 0x80000000;
На самом деле, если вы знаете размер типа, который вы собираетесь вернуть, вы можете пропустить побитовую игру и обмануть в формате:
- In 0x__каждое число равно 4 битам. Это означает, что 2 цифры представляют собой один байт.
- Вы хотите, чтобы первый бит был равен 1, а все остальные биты были равны 0.
- 0x8 = 0b1000
- Таким образом, вы можете представить значение в виде 0x80 + 2 '0 для каждого байта типа после первого.
Но для ответа на остальную часть вашего вопроса.
Как бы я поступил так?
Если вы используете шаблоны, вы (вероятно) использовали бы побитовый трюк, который предлагает другой ответ.В противном случае вы можете обмануть с помощью приведенного выше кода или использовать определение из limit.h (iirc).
~ (~0u >> 1);
Было бы портативным решением.
Не будет ли число отрицательных двух чисел зависеть от того, сколько бит выбрано число?
Самый отрицательный комплимент двух зависит от размера содержащей переменную, поэтому я полагаю, вы могли бы сказать «выбранное число».Фактически диапазон значений зависит от размера содержащейся переменной.
Например, 10000 будет номером с самым отрицательным числом в 16-битном целом числе?
Для 16 битов значение с самым отрицательным значением двух будет равно 0x8000
, 0b1000000000000000
или -32768
, в зависимости от того, как вы хотите, чтобы он представлялся.