国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

負數(shù)的位運算問題

lewinlee / 2208人閱讀

摘要:位運算和無符號位運算對于負數(shù)而言,普通位運算已然保持了符號位,而是將真值部分進行位運算。大數(shù)向小數(shù)的溢出問題直接進行位運算,默認輸出值的類型為等小數(shù)將會自動擴充成進行位運算,則使用位位運算。

原碼、反碼和補碼
一個數(shù)可以分成符號位(0正1負)+ 真值,原碼是我們正常想法寫出來的二進制。由于計算機只能做加法,負數(shù)用單純的二進制原碼書寫會出錯,于是大家發(fā)明了反碼(正數(shù)不變,負數(shù)符號位不變,真值部分取反);再后來由于+0, -0的爭端,于是改進反碼,變成補碼(正數(shù)不變,負數(shù)符號位不變,真值部分取反,然后+1)。二進制前面的0都可以省略,所以總結(jié)來說:計算機里的負數(shù)都是用補碼(符號位1,真值部分取反+1)表示的

位運算和無符號位運算
對于負數(shù)而言,普通位運算已然保持了符號位1,而是將真值部分進行位運算。但要注意對于負數(shù)的位運算操作是建立在補碼上的(補碼運算,得到補碼結(jié)果,將補碼結(jié)果轉(zhuǎn)換為普通的10進制數(shù)結(jié)果),所以就會出現(xiàn)-15 >> 1 得到的是-8 而不是 -7.而無符號位運算則是將負數(shù)的補碼整個一起位移,并且高位補0,這就意味著將高位符號位補0變成了正數(shù),所以最后往往得到一個很大的值,即Integer.MAX_VALUE - x.x為該負數(shù)的絕對值進行位運算后得到的結(jié)果。

大數(shù)(long 64,int 32)向小數(shù)(short 16,byte 8)的溢出問題
直接進行位運算,默認輸出值的類型為int.short, byte等小數(shù)將會自動擴充成int進行位運算,long則使用64位位運算。如果強制大數(shù)向小數(shù)轉(zhuǎn)換,就會出現(xiàn)溢出,原大數(shù)真值中的1變成了小數(shù)里代表符號位的1而成為了負數(shù)。

最后就是位運算在刷題里遇到的不多,有時候那種純數(shù)字的問題不能用乘法除法的話就可以考慮位運算了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/67587.html

相關(guān)文章

  • 由left-pad扯到JS中的位運算

    摘要:原碼補碼和反碼原碼一個數(shù)在計算機中是以二進制的形式存在的,其中第一位存放符號正數(shù)為負數(shù)為。中的位運算在中按位操作符會將其操作數(shù)轉(zhuǎn)成補碼形式的有符號位整數(shù)。原文鏈接由扯到中的位運算 這個話題的由來是2016年3月份的時候 NPM 社區(qū)發(fā)生了‘left-pad’事件,不久后社區(qū)就有人發(fā)布了用來補救的,也是現(xiàn)在大家能用到的 left-pad 庫。 最開始這個庫的代碼是這樣的。 module....

    LeoHsiun 評論0 收藏0
  • 深入研究js中的位運算及用法

    摘要:雖然在內(nèi)部,數(shù)值都是以位浮點數(shù)的形式儲存,但是做位運算的時候,是以位帶符號的整數(shù)進行運算的,并且返回值也是一個位帶符號的整數(shù)。如下表應(yīng)用場景取整對于一般的整數(shù),返回值不會有任何變化。例如,結(jié)果為負數(shù)存儲采用的形式是二進制補碼。 什么是位運算? 位運算是在數(shù)字底層(即表示數(shù)字的 32 個數(shù)位)進行運算的。由于位運算是低級的運算操作,所以速度往往也是最快的(相對其它運算如加減乘除來說),并...

    zhoutao 評論0 收藏0
  • 深入研究js中的位運算及用法

    摘要:雖然在內(nèi)部,數(shù)值都是以位浮點數(shù)的形式儲存,但是做位運算的時候,是以位帶符號的整數(shù)進行運算的,并且返回值也是一個位帶符號的整數(shù)。如下表應(yīng)用場景取整對于一般的整數(shù),返回值不會有任何變化。例如,結(jié)果為負數(shù)存儲采用的形式是二進制補碼。 什么是位運算? 位運算是在數(shù)字底層(即表示數(shù)字的 32 個數(shù)位)進行運算的。由于位運算是低級的運算操作,所以速度往往也是最快的(相對其它運算如加減乘除來說),并...

    hlcfan 評論0 收藏0
  • 深入講解js中的位運算及實際用法

    摘要:雖然在內(nèi)部,數(shù)值都是以位浮點數(shù)的形式儲存,但是做位運算的時候,是以位帶符號的整數(shù)進行運算的,并且返回值也是一個位帶符號的整數(shù)。如下表應(yīng)用場景取整對于一般的整數(shù),返回值不會有任何變化。例如,結(jié)果為負數(shù)存儲采用的形式是二進制補碼。 什么是位運算? 位運算是在數(shù)字底層(即表示數(shù)字的 32 個數(shù)位)進行運算的。由于位運算是低級的運算操作,所以速度往往也是最快的(相對其它運算如加減乘除來說),并...

    jifei 評論0 收藏0
  • 運算符 java

    摘要:反碼正數(shù)的反碼就是本身。負數(shù)的反碼是二進制保留符號位。作用是對運算符兩側(cè)以二進制表達的操作符按位分別進行與運算。則完整的運算式為無符號右移一位。 java中對二進制的操作符 &、|、^、~、>>、>幾個位操作符。不管是初始值是依照何種進制,都會換算成二進制進行位操作。接下來對這幾種操作符進行一下簡單的解說。 先說一下基礎(chǔ)知識: 原碼 就是當(dāng)前數(shù)字的二進制表現(xiàn)形式,如-1的原碼是1000...

    dreamGong 評論0 收藏0

發(fā)表評論

0條評論

lewinlee

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<