Вы не можете получить доступ к отдельным битам целочисленного типа в C или Java, используя оператор []
. Операндом оператора []
должен быть тип массива (C и Java) или тип указателя (C).
Целочисленные типы в C и Java ведут себя аналогично , хотя целочисленные типы в Java имеют фиксированный размер (C целочисленные типы имеют минимальный размер). В обоих языках целочисленные типы размещаются одинаково.
Что касается тестирования нечетных / четных целых чисел без использования побитовых операций (которые могут иметь проблемы с порядком байтов) или оператора модуля, вы можете воспользоваться целочисленной арифметикой c.
В обоих C и Java деление целого числа на целое дает целочисленный результат. 3/2 == 1
, а не 1.5
. 100/26 == 3
и др. c. Таким образом, если вы разделите исходное значение на 2, а затем умножите этот результат на 2, вы получите исходное значение обратно, только если исходное значение четное:
3 / 2 == 1, 1 * 2 == 2, 2 != 3
4 / 2 == 2, 2 * 2 == 4, 4 == 4
5 / 2 == 2, 2 * 2 == 4, 4 != 5
Вы поняли идею. Итак,
int tmp = x / 2;
if ( x == tmp * 2 )
// x is even
else
// x is odd