比較兩個數字的大小

2021-09-01 10:16:08 字數 863 閱讀 4403

int max = x - (x - y) * (x - y >>> 31);

int a;

int b;

while(a>b)

system.out.println(b);

x-y>>>31不是把x-y的符號位取出來了嗎?如果x>=y則x-y>>>31就是0,否則是1

return((a+b)+abs(a-b))/2;

int nums = ;

return nums[(a - b) >>> 31];

int a = ;

arrays.sort(a);

return a[1];

c裡int形變數佔兩個位元組,最小值為負的2的15次方(-32768),是怎麼算出來的。請用2個位元組16位來解釋。

c裡int形變數佔兩個位元組,最小值為負的2的15次方(-32768),是怎麼算出來的。請用2個位元組16位來解釋。我認為最小值應該是最高位(符號位)為1,低15位也全為1才對,但轉換成原碼也不是32768呀,怎麼回事?

--------------------------------

負數,用到補碼,按照下列形式寫。

符號位:1,代表負號;

數值位:000 0000 0000 0000,共15個0。《注意:決不是低15位全為1》!

把數值位,求反加一,可得到原碼,即為:1000 0000 0000 0000,這就是32768。

綜合,補碼:1000 0000 0000 0000 = -32768。

-----------------------------------------

負數,利用原碼求補碼時,是求反加一,而利用補碼求原碼時,也是求反加一。符號位,固定是1,不參加「求反」,也不參加「加一」。

比較兩個數的大小

一 問題 有兩個變數a,b 找出兩個數中間比較大的 二 解決方案 方法1 取平均值法 大的為 a b abs a b 2 小的為 a b abs a b 2 int fmax1 int a,int b 方法2 不使用abs ab時,b a 0,所以前面為a a b 後面為a b,那麼結果就是a in...

不用if比較兩個數大小

一 問題 有兩個變數a,b,不用 if switch或者其它判斷語句,找出兩個數中間比較大的 二 解決方案 方法1 取平均值法 大的為 a b abs a b 2 小的為 a b abs a b 2 int fmax1 int a,int b 方法2 不使用abs ab時,b a 0,所以前面為a ...

不用if比較兩個數大小

大的為 a b abs a b 2 小的為 a b abs a b 2 int fmax1 int a,int b ab時,b a 0,所以前面為a a b 後面為a b,那麼結果就是a int fmax2 int a,int b 如果取 a b 餘數不為0,則說明a b 這是個好方法,不過題目說了...