“对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会用到。这样可防止我们在一个int数里移动不切实际的位数。若对一个long值进行处理,最后得到的结果也是long。此时只会用到右侧的6个低位,防止移动超过long值里现成的位数”1。在byte进行移位的时候,为何要先变成int,这样会造成byte,int不匹配,移位后还要做cast
2. 为何只有5个低位才会用到,这样可以防止一个int数里移动不切实际的位数?难道int数只能移动5位?对于long,只用到低6位,为什么?请各位举例说明
2. 为何只有5个低位才会用到,这样可以防止一个int数里移动不切实际的位数?难道int数只能移动5位?对于long,只用到低6位,为什么?请各位举例说明
2.后五位指的是移动的位数(0~31),比如 byte b=12 b>>65
65的后位是 00001 所以b>>65 相当于 b>>1
对于long型,六位就够了(可以移动0~63)