Вы спрашиваете, можете ли вы вывести маску в двоичном виде?
Если это так, это сделает работу:
System.out.println(Integer.toBinaryString(mask));
или в шестнадцатеричном формате:
System.out.println(Integer.toHexString(mask));
( РЕДАКТИРОВАТЬ - я ранее говорил, что должен использовать Integer.toString(mask, 2 /* or 16 */)
, но это форматирует число как подписанное ... что, очевидно, сбивает вас с толку.)
В конечном итоге вы такжехочу знать, чтобы возвращать более одного значения из вызова метода Java.Ответ - вернуть значения в массиве (или объекте);например,
return new int[]{(char)(0x80 >> (x % 8)), x >> 3});
или установить их в изменяемый массив или объект, переданный в качестве параметра.
У меня такое ощущение, что вы не поняли, что char
является 16-битнымвведите в Java.Если вы хотите, чтобы тип был эквивалентен C / C ++ char
, самым близким является тип Java byte
- 8-битный тип со знаком.
При дальнейшем рассмотрении самый простой подходсделать расчеты, чтобы дать вам int
значений;например,
return new int[]{0x80 >> (x % 8), x >> 3});
, и вызывающая сторона преобразует любое значение в какой-либо другой тип , если требуется .
Предполагая, что эти значения предназначены для использования в побитовом режиме,тот факт, что они могут выглядеть отрицательно, не имеет значения ... при условии, что битовые комбинации верны.Помните, что это битовые комбинации, а не числа.Если это сбивает с толку, используйте Integer.toHexString(...)
или Integer.toBinaryString(...)
, чтобы распечатать их в неподписанном виде.