您的位置:首页 > 其它

右移时应该注意的问题

2010-10-17 09:03 120 查看
package com.kkoolerter.jdk;

public class RightByteShift {

public static void main(String[] args) {
/*
* 注意下面的结果,无论-1右移多少位,它的结果始终是-1。 因为符号扩展在高阶位中引进了更多的1。
* 什么是符号扩展?答案是:右移时,空出的最高位(最左边) 由原来的最高位内容填充。这被称作“符号扩展”,在进行 右移时用来保持负数的符号。
*/
System.out.println("-1>>1 = " + (-1 >> 1));

System.out.println(HexByte.toHexString((byte) 2));
}
}

/**
* 把一个byte转换成十六进制表示 <br>
* 注意,右移后的值与0x0f进行按位与操作,目的是将扩展位符号丢弃
*
* @author Jenson
*
*/
class HexByte {
private static char[] hex = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'A', 'B', 'C', 'D', 'E', 'F' };

public static String toHexString(byte b) {
return new StringBuilder("0x").append(hex[(b >> 4) & 0x0f])
.append(hex[b & 0x0f]).toString();
}
}
本文出自 “有思想的代码” 博客,请务必保留此出处http://wujuxiang.blog.51cto.com/2250829/406805
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: