注意到在 java 中使用按位运算符的奇怪行为

问题描述 投票:0回答:0

我试图在除以 2 直到数字等于 0 的同时打印所有底值,但我犯了一个错误并且从未更新过实际值。我使用的是右移运算符,但它并没有像预期的那样无限继续下去,而是将数字转换为二进制并反转了 32 位数字,并且从不打印任何值。 甚至二进制数也被转换回十进制... 谁能解释执行流程是如何发生的?我也在使用 eclipse IDE....

public static void main(String[] args) {
    System.out.println(get(15));   //4026531840(output) is the decimal conversion of reversed 32 
    }                                      //bit of 1111(15)

static String get(int l) {  
    int temp = l;
    String store = "";     
    while(temp!=0) {
        int i = temp >> 1;
        System.out.println(i);     //never worked
        store = i + store;  
    }
    return store; 
}
java bitwise-operators bit-shift
© www.soinside.com 2019 - 2024. All rights reserved.