@Biaci_Anj

Объясните, пожалуйста, этот пример в побитовых операциях, зачем тут Math.pow?

Смысл метода простой: нужно показать 64 бита и только там 1, где нужно в зависимости от параметров, что переданы метод. Можно представить эти 64 бита как карту 8*8.
/*
    ABCDEFGH
   ┌────────
  1│10000000
  2│00000000
  3│00000000
  4│00000000
  5│00000000
  6│00000000
  7│00000000
  8│00000000
 */
В метод залетает буква и цифра - А1 например ( как в примере выше ), там и должна быть единица.

    public static void shoot(String shot) {
       int columns = (int) shot.charAt(0) - 64; 
       int rows = Character.getNumericValue(shot.charAt(1));

       int sdvig = 8 * ( 8 - rows);
       long firstValue  = (long) Math.pow(2, 8 - columns );
        System.out.println(Long.toBinaryString(firstValue << sdvig));

}
shoot("A1");

Не очень понимаю решение выше, но оно работает.
Я был бы крайне благодарен, если бы объяснили зачем тут Math.pow
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
@rPman
возведение в степень 2^x это побитовый сдвиг единицы влево на x бит, отсчет начинается с 0 (2 в степени 0 = 1, 2 в степени 1 - 010, 2 в степени 3 - 100,..)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы