第2个回答 2012-07-17
按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。
特别注意对某变量进行移位操作时,变量本身不会变。byte、short和char类型移位后的结果会变成int类型。表达式int a=(b<<24)+(c<<16)(b,c为char型)是正确的虽然b、c均只有8位。