package com.javarush.test.level21.lesson02.task01; /* Определяем адрес сети 1) Даны IP-адрес и маска подсети, необходимо вычислить адрес сети - метод getNetAddress. Используйте операцию поразрядной конъюнкции (логическое И). Пример: IP-адрес: 11000000 10101000 00000001 00000010 (192.168.1.2) Маска подсети: 11111111 11111111 11111110 00000000 (255.255.254.0) Адрес сети: 11000000 10101000 00000000 00000000 (192.168.0.0) 2) Реализовать метод print, который выведет в консоль данные в двоичном коде 3) Метод main не участвует в тестировании */ public class Solution { public static void main(String[] args) { byte[] ip = new byte[]{(byte) 192, (byte) 168, 1, 2}; byte[] mask = new byte[]{(byte) 255, (byte) 255, (byte) 254, 0}; byte[] netAddress = getNetAddress(ip, mask); print(ip); //11000000 10101000 00000001 00000010 print(mask); //11111111 11111111 11111110 00000000 print(netAddress); //11000000 10101000 00000000 00000000 } public static byte[] getNetAddress(byte[] ip, byte[] mask) { byte[] address = new byte[4]; for (int i = 0; i < ip.length; i++) address[i] = (byte) (ip[i] & mask[i]); return address; } public static void print(byte[] bytes) { for (int i = 0; i < bytes.length; i++) { int f = (int) bytes[i]; // получаем значение и приводим его к интегер if(f < 0) f += 256; // если значение меньше 0, то + 256 - тут получается исходник из -64 192 String str = Integer.toBinaryString(f); // преобразовываем к двоичному коду System.out.printf("%08d", Integer.parseInt(str)); if (i < bytes.length - 1) System.out.print(" "); } System.out.println(); } }
Leave A Comment