[英]Can someone please explain this bitwise program to me?
public class UpCase {
public static void main(String[] args) {
int t;
byte val;
val = 123;
for (t = 128; t > 0; t = t / 2) {
System.out.println(t);
if ((val & t) != 0) System.out.println(" 1");
else System.out.println(" 0");
}
}
}
特別是,我不確定為什么我們使用val=123
? 我知道這個程序會以二進制形式打印出 123 但為什么會這樣呢? 這是如何運作的? 但是,我確實理解&
運算符的原理以及如何打開和關閉位,但我不確定它在此特定示例中的工作原理?
該程序將通過與 2 的每個冪進行比較,將val
數字的二進制數字從 MSB 打印到 LSB:
123 : 01111011 &
128 : 10000000 =
00000000
00000000 != 0 => false, print 0
123 : 01111011 &
64 : 01000000 =
01000000
01000000 != 0 => true, print 1
123 : 01111011 &
32 : 00100000 =
00100000
00100000 != 0 => true, print 1
// repeat for 2^4-2^1...
123 : 01111011 &
1 : 00000001 =
00000001
00000001 != 0 => true, print 1
很簡單:
它只是使用按位運算符 & 檢查值(在本例中為 123)。 其結果為 1 或 0,此過程對下一個值 0.5t 重復,直到 t=0,產生此值 123 的二進制字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.