Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
代码的注释是什么';HD,图';在Java.lang.Integer类中是什么意思?_Java_Jvm_Openjdk_Jvm Hotspot - Fatal编程技术网

代码的注释是什么';HD,图';在Java.lang.Integer类中是什么意思?

代码的注释是什么';HD,图';在Java.lang.Integer类中是什么意思?,java,jvm,openjdk,jvm-hotspot,Java,Jvm,Openjdk,Jvm Hotspot,例如,JDK方法java.lang.Integer.numberOfLeadingZeros(int): public static int numberofleadingzero(int i){ //HD,图5-6 如果(i==0) 返回32; int n=1; 如果(i>>>16==0){n+=16;i>24==0){n+=8;i>28==0){n+=4;i>30==0){n+=2;i>31; 返回n; } 代码注释“HD,图5-6”是什么意思?HD=黑客的喜悦。请参阅: 实施说明:“比特

例如,JDK方法java.lang.Integer.numberOfLeadingZeros(int):

public static int numberofleadingzero(int i){
//HD,图5-6
如果(i==0)
返回32;
int n=1;
如果(i>>>16==0){n+=16;i>24==0){n+=8;i>28==0){n+=4;i>30==0){n+=2;i>31;
返回n;
}

代码注释“HD,图5-6”是什么意思?

HD=黑客的喜悦。请参阅:

实施说明:“比特旋转”方法(如
highestOneBit
numberOfTrailingZeros
)的实施基于小亨利·S·沃伦的《黑客的喜悦》(Addison Wesley,2002)中的材料


java.lang.Long
java.lang.Math
中也有这样的注释

例如,
java.lang.Math
中的
addExact
方法:

public static int addExact(int x, int y) {
    int r = x + y;
    // HD 2-12 Overflow iff both arguments have the opposite sign of the result
    if (((x ^ r) & (y ^ r)) < 0) {
        throw new ArithmeticException("integer overflow");
    }
    return r;
}
公共静态整数加法器(整数x,整数y){
int r=x+y;
//HD 2-12溢出iff两个参数的结果符号相反
如果((x^r)和(y^r))<0{
抛出新的算术异常(“整数溢出”);
}
返回r;
}

关于Hacker高兴的信息,我们还可以参考:

这看起来像是对文学的参考Cool man,我想我找到了numberOfLeadingZeros()方法没有负条件逻辑的原因:
if(I@Jason:我非常确定
ntz
的意思是“尾随零的数量”,而不是“前导零的数目”。@Holger我没拼出来,函数名应该是nlz(),这是HD书籍的完整副本:
intnlz(无符号x){intn;if(x==0)返回(32);n=1;if((x>>16)==0{n=n+16;x=x24)==0{n=n+8;x=x>28)==0{n=n+4;x=x>30)==0{n=n+2;x=31);返回n;
public static int addExact(int x, int y) {
    int r = x + y;
    // HD 2-12 Overflow iff both arguments have the opposite sign of the result
    if (((x ^ r) & (y ^ r)) < 0) {
        throw new ArithmeticException("integer overflow");
    }
    return r;
}