setBit java method using bit shifting and hexadecimal code - question

Posted by somewhat_confused on Stack Overflow See other posts from Stack Overflow or by somewhat_confused
Published on 2010-04-16T19:47:16Z Indexed on 2010/04/16 19:53 UTC
Read the original article Hit count: 265

Filed under:
|
|

I am having trouble understanding what is happening in the two lines with the 0xFF7F and the one below it. There is a link here that explains it to some degree. http://www.herongyang.com/java/Bit-String-Set-Bit-to-Byte-Array.html I don't know if 0xFF7F>>posBit) & oldByte) & 0x00FF are supposed to be 3 values 'AND'ed together or how this is supposed to be read. If anyone can clarify what is happening here a little better, I would greatly appreciate it.

private static void setBit(byte[] data,
                               final int pos,
                               final int val) {
        int posByte = pos/8;
        int posBit = pos%8;
        byte oldByte = data[posByte];
        oldByte = (byte) (((0xFF7F>>posBit) & oldByte) & 0x00FF);
        byte newByte = (byte) ((val<<(8-(posBit+1))) | oldByte);
        data[posByte] = newByte;
    }

passed into this method as parameters from a selectBits method was setBit(out,i,val); out = is byte[] out = new byte[numOfBytes]; (numOfBytes can be 7 in this situation) i = which is number [57], the original number from the PC1 int array holding the 56-integers. val = which is the bit taken from the byte array from the getBit() method.

© Stack Overflow or respective owner

Related posts about hexadecimal

Related posts about hex