In java before any arithmetic operation integer values (boolean, byte, short) which are smaller than Int are converted to Int with sign extension, except char values which converted with zero extension. To get correct result of char vectors right shift operaiton we should use unsigned (logical) right shift operation.