Маскировка доп. знаков разряда

Рейтинг: -1Ответов: 1Опубликовано: 22.12.2014
//Маскировка доп. знаков разряда
Class Hexbyte {
    Static public void main (String arms[]){
        char hex[] ={
        '0','1'.'2','3','4','5','6','7'
        '8','9','a','b','c','d','e','f'

        };
        Byte b = (byte) 0xf1
        System.out.println("b=0x" + hex[(b>>4) & 0x0f] + hex[b&0x0f]);
    }
}

Result:b=0xf1

Ответы

▲ 1

Переведите все числа в двоичный вид и тогда все поймете.

0xf1 в двоичном представлении это 11110001. Сдвигаем его на 4 знака вправа (b>>4), получим 00001111. Получается, что этим действием мы "берем" из числа только старший байт(0xf).

Операцией b & 0x0f мы получаем младший байт, т.к. 0xf1 & 0x0f = 11110001 & 00001111 = 00000001