1. 程式人生 > >php取反運算值 {echo ~2;}你知道結果是什麽嗎?

php取反運算值 {echo ~2;}你知道結果是什麽嗎?

計算機 表示 請問 color clas ech tro brush 第一個

echo ~2; 

  請問結果值是多少呢?

答案是 -3

為什麽?

首先計算機用補碼來存儲的,正數的原碼、反碼、補碼都是一樣的,

例如:

3的原碼、反碼、補碼都是

00000000 00000000 00000000 00000011

-3的原碼 10000000 00000000 00000000 00000011 (第一個是符號位,1表示負數)

-3的反碼 11111111 111111111 11111111 11111100 (符號位第一個不變,其他位置取反)

-3的補碼 11111111 111111111 11111111 11111101

再來看看之前的問題:

// 2的補碼   00000000 000000000 00000000 00000010
// ~運算後   11111111 111111111 11111111 11111101  (其實就-3的補碼)
echo ~2; // 輸出 -3

// 4的補碼   00000000 000000000 00000000 00000100
// ~運算後   11111111 111111111 11111111 11111011  (其實就-5的補碼)
//          11111111 111111111 11111111 1111010   (反碼)
//          10000000 00000000  00000000 0000101   (原碼)
echo ~4;//輸出 -5

  

php取反運算值 {echo ~2;}你知道結果是什麽嗎?