В отличие от многих предложений здесь: Integer.toBinaryString
, не работает для 16-битного (короткого) и не будет печатать начальные нули. Причина в том, что (как следует из названия) это будет работать только для целых чисел. А для отрицательных чисел представление битов изменится (первый бит указывает отрицательное число). Два числа ниже представляют одно и то же число вкратце и int. Поэтому, если вы хотите представить необработанные биты, которые вы получили (это общее применение вашей проблемы), эта функция сгенерирует странный вывод.
decimal: -3
short: 1111 1111 1111 1101
int: 1111 1111 1111 1111 1111 1111 1111 1101
РЕДАКТИРОВАТЬ: изменилось число выше
Следовательно, вы не можете разыграть шорт, если вас интересует бит.
Java для краткости не предоставляет реализацию, поэтому вам придется предоставить свою собственную. Примерно так (размер - это количество бит):
int displayMask = 1 << (size - 1);
StringBuffer buf = new StringBuffer( size);
for ( int c = 1; c <= size; c++ )
{
buf.append( ( value & displayMask ) == 0 ? '0' : '1' );
value <<= 1;
}