thats the way -ve numbers are represented. if the 8th bit is 0 then its a +ve number and you "convert" the remaining 7 bits to find the integer value. if the 8th bit is 1 then we are looking at a -ve number. so you 2's complement the remaining 7 bits, get integer value and put a - in front.
you do not actually need to cast to byte in your assignment. Let Mr compiler sweat it out and do some thing worthwhile for qa change except for pointing your errors. it does same for char and short (downcasts).