位運算與浮點二分

2021-10-17 20:29:32 字數 957 閱讀 2486

浮點二分

四個運算子

與 &:只有x,y都是1的時候,運算結果才是1,其餘為0

或 |:x,y只要有乙個為1,結果都為1

非 !:如果x是0,!x=1,x是1的話,運算結果是0

異或 ^:x ^ y相同時0,不同是1

整形,分為有符號整型和無符號整型

int是32位二進位制

有符號整型中判斷正負看最高位數字,0為正數,1為負數

比如: 1:00000…01 而 -1:10000…01

正數的反碼等於原碼。

如3的原碼為0011,反碼為0011

負數的反碼:符號位不變,數值位按位取反;

如-3的原碼為1011,而他的反碼為1100,最高位為符號位,不取反。

正數的補碼等於原碼

負數的補碼等於其反碼加一

當整形進行左移:運算子為<<,按運算數的二進位制整體左移指定位數。

丟棄最高位,0補最低位。

相當於乘以2的n次方。

比如(1)00000001左移一位,變為(2)00000010,再左移一位,變為(4)00000100。

右移時:運算子為》,是算術右移不是邏輯右移,相當於刪除個位數,補乙個最高位,補的是最高位,正數補1,負數補0。

相當於除以2的n次方。

可將上例反著看。

浮點二分相比整數二分考慮的問題較少,整數二分要在mid後加1,若不加1,令l=r-1,結果仍為l,陷入死迴圈。

但浮點二分需注意:

1.浮點數不可判等,精度問題。

2.若保留n位小數,一般精度設為1e(-n-2)位。

模板

bool

check

(double x)

double

bsearch_3

(double l,

double r)

return1;

}

待補充。。。。。。

二分 整數二分和浮點數二分

一定是單調的才可以二分。找中間點 判斷是否滿足check函式 此函式需要自己根據題意調整,假設紅色區域為滿足check函式,說明mid在紅色區域內,此時要在mid到r之間找,l mid,否則r mid 1。由於此時l mid 所以中間點應為 l r 1 2 中間點mid l r 2 mid l r ...

浮點數二分

2 浮點數二分 模板 浮點數二分演算法模板 模板題 acwing 790.數的三次方根 bool check double x double bsearch3 double l,double r return l acwing790.數的三次方根 給定乙個浮點數n,求它的三次方根。輸入格式 共一行,...

整數二分和浮點數二分

注意點 1.有單調性一定可以二分,二分不一定需要單調性 2.二分本質 找到一種性質,將乙個區間一分為二,一部分滿足性質,另一部分不滿足性質,通過二分找到兩部分的邊界 3.二分一定有解,即能夠找到性質的邊界。無解通常跟題目有關。4.浮點數二分 精度足夠小時結束迴圈 或者 直接迴圈100次 while ...