Co value & 0xff robi w Javie?

Mam następujący kod Java: byte value = 0xfe; // corresponds to -2 (signed) and 254 (unsigned) int result = value & 0xff; Wynik po wydrukowaniu to 254, ale nie mam pojęcia, jak działa ten kod. Jeśli &operator jest po prostu bitowy, dlaczego nie daje bajtu, a zamiast tego jest liczbą...