Из моего (второго) прочтения вашего вопроса кажется, что вам не нужно «извлекать» какие-либо биты, а вместо этого конвертировать целое число?
т.е. сделать что-то вроде этого:
int negative = -4711;
short x = (short) negative;
В этом случае компилятор позаботится о том, чтобы как можно больше точности исходного числа было преобразовано в присваивании. Это будет иметь место, даже если базовое оборудование не будет использовать дополнение 2: s. Если это так, то, скорее всего, это будет усечение, как объяснил Мотти.