Условие задачи:
Реализуйте метод flipBit
, изменяющий значение одного бита заданного целого числа на противоположное.Договоримся, что биты нумеруются от младшего (индекс 1) к старшему (индекс 32).
А вот его решение:
public static int flipBit(int value, int bitIndex) {
return value ^ (1 << bitIndex-1);
}
Вопрос: никак не могу понять что происходит здесь:
(1 << bitIndex-1)
разъясните пож-а.
Вопрос: никак не могу понять что происходит здесь: (1 << bitIndex-1)
Происходит сдвиг битов влево (или тупо возведение двойки в степень) bitIndex-1
На самом деле более подробно можно посмотреть тут
Вкратце 1 можно представить примерно как 00000001
<<
— побитовый сдвиг влево
в итоге например если bitIndex
равно 3, то 1 << 3
(смещаем единицу на три разряда влево) получается
00001000 // 8
а при bitIndex - 1
получается соответственно:
bitIndex - 1 → 1 << 2 → 00000100 // 4
Хотя в итоге чему равно значение в десятичной системе не важно, но это просто, на заметку
Происходит сдвиг битов влево, на место новых битов становятся нули. По сути это возведение двойки в степень.
1 << 5 // 100000 или 32
Вопрос: никак не могу понять что происходит здесь:
(1 << bitIndex-1)
Здесь происходит сдвиг битов в 1
влево на bitIndex-1
позиций.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
В vk, например, длинные имя и фамилия прокручиваются по кругу, как такое реализовать?
Я хочу вытянуть из сайта определенную часть и сделать из этого куска pdf документСоздаю документ по примеру из официального сайта iText:
Нужно нарисовать полигон с кординнатамиПроблема в том что открываеться окно но не отрисовывается полигон