c語言位運(yùn)算的實例 C語言中的位運(yùn)算符是怎么取反的?
C語言中的位運(yùn)算符是怎么取反的?a為int類型 通常占4個字節(jié)2的原碼:0000 0000 0000 0000 0000 0000 0000 0010取反: 1111 1111 1111 1111 1
C語言中的位運(yùn)算符是怎么取反的?
a為int類型 通常占4個字節(jié)
2的原碼:0000 0000 0000 0000 0000 0000 0000 0010
取反: 1111 1111 1111 1111 1111 1111 1111 1101
最高位是1所以是負(fù)數(shù),求其原始數(shù)據(jù),方法是
再次取反加1(符號位不變)
取反: 1000 0000 0000 0000 0000 0000 0000 0010
加1 1000 0000 0000 0000 0000 0000 0000 0011
所以是 -3
c語言中的位運(yùn)算符中‘按位取反’是怎么運(yùn)算的?
使用~按位取反運(yùn)算的時候,計算機(jī)會將操作數(shù)所對應(yīng)的二進(jìn)制表達(dá)式的每一個位進(jìn)行取反計算,取反后所得到的值就是~按位取反的運(yùn)算結(jié)果。例如,假如計算機(jī)是32位的,接下來要計算~5的值,計算過程如下:5的二進(jìn)制表達(dá)式為:00000000000000000000000000000101執(zhí)行~運(yùn)算,即~5后:11111111111111111111111111111010,即結(jié)果為-6以上過程沒有任何問題,但如果忘記了負(fù)數(shù)的二進(jìn)制表達(dá)方式,那么就會對這個結(jié)果產(chǎn)生疑問,為什么11111111111111111111111111111010表示-6,可能會以為它應(yīng)該表示-10等等,所以,使用~按位取反的另一個關(guān)鍵就是理解11111111111111111111111111111010為什么表示-6,也即理解負(fù)數(shù)的二進(jìn)制表達(dá)方式。擴(kuò)展資料js取整~是按位取反運(yùn)算,~~是取反兩次在這里~~的作用是去掉小數(shù)部分因為位運(yùn)算的操作值要求是整數(shù),其結(jié)果也是整數(shù),所以經(jīng)過位運(yùn)算的都會自動變成整數(shù)除了~~n還可以用n<<0n>>0n|0