阿摩線上測驗 登入

申論題資訊

試卷:109年 - 109 普通考試_資訊處理:程式設計概要#88788
科目:程式設計
年份:109年
排序:0

申論題內容

二、請參考以下Java程式。如果第一個輸入是25,第二個輸入是-34(負34)。 最後印出來是什麼?(作答必須解釋計算過程,只寫答案而未加解釋,只 能得部分分數。)5f1939e186886.jpg

詳解 (共 5 筆)

詳解 提供者:皮卡112年高普考雙榜感謝阿摩

The First number is -34
The Second number is 25
(^是XOR,做3次XOR=swap 但還是寫一下過程好ㄌ)

num1=25^-34
  25=0011001
-34=1100010
-----------------
1111011=-59

num2=-59^-34
-59=1111011
-34=1100010
----------------
0011001=25

num1=-59^25
 25=0011001
-59=1111011
----------------
1100010=-34

詳解 提供者:aabb177

-34 :11000102

 25: 00110012


num1 = num1 ^ num2 =-34 XOR 25 =1111011 =-58

num2 = num1 ^ num2 =1100010 =-34

num1 = num1 ^ num2 =0011001 =25


最後列出

The First number is -34

The Second number is 25





詳解 提供者:fun40431
-34 :11000102 25: 00110012num1 = num1 ^ num2 =-34 XOR 25 =1111011 =-58num2 = num1 ^ num2 =1100010 =-34num1 = num1 ^ num2 =0011001 =25最後列出The First number is -34The Second number is 25
詳解 提供者:牛奶鍋
Java 使用2的補碼來儲存負數
詳解 提供者:hchungw

這個 Java 程式使用了 XOR(^)運算符來交換兩個數字的值,不使用任何額外的臨時變量。這是 XOR 位運算的一個經典應用。
在這個過程中:
首先,num1 獲得了兩數字的 XOR 結果。
然後,這個結果被 XOR 進 num2 中,產生了原始的 num1。
最後,這個結果又被 XOR 進 num1 中,產生了原始的 num2。
當我們用 25 和 -34 來代入這些步驟時:
num1 = 25,二進制為 00011001。
num2 = -34,二進制為 11111110(使用二補數表示負數)。
num1 = num1 ^ num2,這將是 00011001 ^ 11111110,結果為 11100111。
num2 = num1 ^ num2,這將是 11100111 ^ 11111110,結果為 00011001,這是 25 的二進制表示。
num1 = num1 ^ num2,這將是 11100111 ^ 00011001,結果為 11111110,這是 -34 的二進制表示。
這樣,num1 和 num2 的值被交換了。所以最後的結果應該會印出:
csharp
Copy code
The First number is -34
The Second number is 25
這個交換過程是利用 XOR 運算的性質,即任何數字 XOR 自身會得到 0,並且任何數字 XOR 0 會得到該數字本身。此外,XOR 運算是可逆的,所以可以用來交換數值而不需要額外的儲存空間。