Ну окей, с оператором & я разобрался быстро, цикл написал, посимвольно он мне там все сложил. Возможно, даже правильно. Но вывод в консоль:
11111111111111111111111111000000 11111111111111111111111110101000 1 10
11111111111111111111111111111111 11111111111111111111111111111111 11111111111111111111111111111110 0
11111111111111111111111111000000 11111111111111111111111110101000 0 0
Как его преобразовывать? Помогите, объясните, пожалуйста.
Если начать реать единицы и нули, разве это не изменит само число?
package com.javarush.task.task21.task2101;
/*
Определяем адрес сети
*/
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[] setka = new byte[4];
for (int i = 0; i < setka.length; i++){
setka[i] = (byte) (ip[i] & mask[i]);
}
return setka;
}
public static void print(byte[] bytes) {
for (byte number : bytes){
System.out.print( Integer.toBinaryString(number) + " ");
}
System.out.println();
}
}