2016-07-08 4 views
-1

Я слышал, что это вопрос, который задают в интервью, учитывая два байта, возвращает истину, если они симметричныпроверить, если два байта симметричны

public boolean isSym(Byte firstByte, Byte secondByte); 

01101000 и 00010110 симметричны, но 01100000 и 11000000 не являются , необходимо написать код на Java. Любые идеи, что это лучший способ сделать это?

+0

Неверный тег, вы использовали javascript, должен быть java – aximus

+0

@aximus уже исправлен. –

+0

Существуют различные способы изменения последовательности бит: https://graphics.stanford.edu/~seander/bithacks.html#BitReverseObvious – khelwood

ответ

2
public boolean isSym(Byte firstByte, Byte secondByte) 
{ 

    for (int i = 0; i< 8 ; i++){ 
     if (bitAt(firstByte, i) != bitAt(secondByte, 7 - i)) 
      return false; 
    } 

    return true; 
} 

public byte bitAt(byte num, int position) 
{ 
    return (byte)((num >> position) & (byte)1); 
}