欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中的取反操作符(~)

 更新時(shí)間:2023年03月25日 16:41:38   作者:王魚(Virgil)  
這篇文章主要介紹了python中的取反操作符(~),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

python取反操作符

~ : 按位取反運(yùn)算符:對(duì)數(shù)據(jù)的每個(gè)二進(jìn)制位取反,即把1變?yōu)?,把0變?yōu)? 。

~x 類似于 -x-1

1、計(jì)算依據(jù)

  • ①正數(shù)的原碼、反碼、補(bǔ)碼都是一樣的
  • ②負(fù)數(shù)的補(bǔ)碼為符號(hào)位不變,剩余位取反再加1
  • ③原碼求補(bǔ)碼: 取反,+1
  • ④補(bǔ)碼求原碼: 取反,+1
  • ⑤負(fù)數(shù)是以補(bǔ)碼存儲(chǔ)的
  • ⑥取反操作是在原碼上進(jìn)行的
  • ⑦符號(hào)位,1表示負(fù)數(shù),0表示正數(shù)

2、例子

~(-2)

首先你要知道 -2 在計(jì)算機(jī)里面的二進(jìn)制形式,由⑤和②可知:

  • -2 原碼:1000 0000 0000 0010
  • -2 反碼:1111 1111 1111 1101 #符號(hào)位不變,各位求反
  • -2 補(bǔ)碼:1111 1111 1111 1110 #補(bǔ)碼 = 反碼 + 1

1111 1111 1111 1110 就是-2在計(jì)算機(jī)里面的原型

現(xiàn)在開始對(duì)他求反,符號(hào)位不變,

按位取反: 0000 0000 0000 0001

很明顯是一個(gè)正數(shù),其原碼為其本身,所以輸出為1.

~2

2 原碼,反碼,補(bǔ)碼: 0000 0000 0000 0010

按位取反: 1111 1111 1111 1101

這是一個(gè)負(fù)數(shù)該怎么辦?能直接求嗎?

很顯然是不行的,⑥說了:取反操作計(jì)算結(jié)果是在原碼上進(jìn)行的,⑤也說了:負(fù)數(shù)是以補(bǔ)碼存儲(chǔ)的

1111 1111 1111 1101 是 0000 0000 0000 0010 的反碼,但我們想要的是結(jié)果,而不是在計(jì)算機(jī)里面的原型,

恰好,④補(bǔ)碼求原碼: 取反,+1

  • 取反: 1000 0000 0000 0010
  • 加 1: 1000 0000 0000 0011

于是,我們得到了原碼,可以計(jì)算結(jié)果了

1000 0000 0000 0011 = -3

總之,取反很簡單,但是要注意,取反后是不是原碼,是否可以直接計(jì)算結(jié)果

python數(shù)值取反問題~

在python中,用取反符號(hào)~得到的并不是我們想象中的結(jié)果,總結(jié)一下規(guī)律,就是   (取反后的值)=  -(取反前的值)-1

下面來分析一下

例如對(duì)1取反,1的8位二進(jìn)制表示為:0000 0001 ,  取反后的結(jié)果是:1111 1110, 對(duì)于計(jì)算機(jī)來說,二進(jìn)制以1開頭表示的是負(fù)數(shù), 所以這個(gè)1111 1110到底表示的是什么負(fù)值呢,想要知道這個(gè)值,可以求它的補(bǔ)碼,即先取反碼 :0000 0001, 再加1:0000 0010,說明 1111 1110 的原碼為 0000 0010 也就是正數(shù) 2, 所以 1111 1110代表的就是負(fù)數(shù) -2 

下面再舉個(gè)例如

對(duì) -2 取反, -2的二進(jìn)制表示為 2的補(bǔ)碼,即 0000 0010 > 1111 1101 > 1111 1110 ,-2的二進(jìn)制就表示為1111 1110, 對(duì)它取反得到 0000 0001,顯而易見,取反后的值為1 , 所以 ~(-2)= 1  ,  ~1=-2

總結(jié)出來就是:(取反后的值)=  -(取反前的值)-1

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論