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