巧用移位和按位與運算子輸出二進位制補碼
阿新 • • 發佈:2019-01-02
一 問題描述
給定任一整型值,輸出其二進位制補碼(即機器碼)。
二 求解思路
整型值在機器中正是以二進位制補碼存放,在JAVA中,用print函式輸出的是其十進位制形式。&運算子會將兩邊的運算元按其二進位制形式逐個bit求與,並最終生成一個整型值(不同於邏輯與,生成的是boolean)。這樣,可利用位元1去逐位測試,結果不為0,說明待測試位為1,否則為0。將一個整型值的每一bit都確定了,其二進位制補碼也就確定了。
三 程式設計實現
public class Bcode{
public static void main(String[] args) {
pBcode(-1);
}
static void pBcode( int i) {
System.out.print(i+"的二進位制補碼是:");
for(int j = 31; j >=0; j--) {
if(((1 << j) & i) != 0) //用 00000000000000000000000000000001移位實現位元"1"測試
System.out.print("1");
else
System.out.print("0");
}
}
}
輸出結果為 -1的二進位制補碼是:11111111111111111111111111111111