精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

二進制究竟有什么用?帶你看看那些好玩兒的「位操作」

存儲 存儲軟件
計算機說到底就是 0 和 1,所有的數在內存中都是以二進制的形式儲存的。而位操作,或者說位運算,就是直接對內存中的二進制位進行操作。

[[339195]]

計算機說到底就是 0 和 1,所有的數在內存中都是以二進制的形式儲存的。

而位操作,或者說位運算,就是直接對內存中的二進制位進行操作。

位運算可以說是我們的基本功,今天這篇文章就從以下角度和大家一起玩轉位運算。

  1. 位運算究竟有什么用?
  2. 原碼 反碼 補碼
  3. 7 種位運算

當然了,位運算還有很多奇技淫巧,如果大家還想看進階篇,記得給我點贊或者留言告訴我哦~

位運算的作用

在實際生產中,位運算是用來優化時間和空間的。

位運算可能并不會降低復雜度的等級,但是可以把復雜度前面的系數降下來。

舉個例子。

大家都知道堆,或者叫優先隊列,一般來說是用完全二叉樹來實現的,叫做二叉堆。

最小堆

 

二叉堆插入、刪除元素的時間復雜度都是 O(logn),如果這個不清楚的同學趕緊在公眾號內回復「堆」復習一下,或者點擊這里~

但是有另一種堆,它能夠做到 O(1) 的時間插入元素,O(logn) 的時間刪除元素,我在堆這篇文章里也提到過,就是斐波那契堆。

但為什么不用呢?

就是因為 O(1) 前面的系數非常大。

 

我們說 O(logn) 比 O(1) 好,是有個條件的,那就是 n 非常非常大的情況下,但是實際上,如果 n 是在 int 范圍內,那么取個 log 也不過就是 32 了,反而這個 O(1) 的時間復雜度可能系數達到幾百幾千。

一般來說實際應用中時間的測量并不是像我們做算法題時用時間復雜度這么簡單,有的時候就需要你把兩個算法都實現出來,去跑去測量它的時間,才能決定哪個好。

那么二進制一次能夠作用于 32 位上(假設是一個 int),如果數據表示的巧妙,這完全可以優化 32 倍,多用幾個 int 就多優化了好幾個 32 倍,不香嗎?

 

除了優化時間,還可以優化空間。

比如在網站發布新版本時,一般都會附上支持該版本的瀏覽器列表,不然有些老掉牙的瀏覽器看不到我的新功能還算我的鍋么?

那么怎么有效的表示這個瀏覽器列表呢?

全世界所有瀏覽器都有個國際標準編號,這里我就簡單假設一下:

  • 0 表示 QQ 瀏覽器
  • 1 表示 Chrome 瀏覽器
  • 2 表示火狐瀏覽器
  • 3 表示 ...

那么我們就可以用一個 int 表示是否支持這些瀏覽器的狀態,如果這個瀏覽器能用,那么這一位上就設為 1,不能用就設為 0,這樣用一個 int 就能表示 32 個網站。

那么國內的某個網站可以表示為:

  • 0b .... 1101

所以位操作在很多代碼里都很常用,比如網絡協議、操作系統等等。

這就是位運算的兩大優勢,接下來我們說說具體的知識點。

原碼 反碼 補碼

數字有正有負,Java 中用的是 signed type,就是有正有負的。

雖然在 Java 8 之后,也用了個工具來實現 unsigned type,但是其實底層實現是沒有的。

二進制最左邊的一位是符號位,

  • 0 表示這個數是非負數;
  • 1 表示這個數是負數。

對了,最左邊的一位英文叫做 most significant bit,別說錯了。。。

正數

正數的原碼反碼補碼相同,沒啥好說的。

比如:

  • int 1 = 0b 0000 0000 0000 0001
  • int 2 = 0b 0000 0000 0000 0010

負數:

原碼:把相應的正數的符號位設為 1。

  • -1 的原碼 = 0b 1000 0000 0000 0001
  • -2 的原碼 = 0b 1000 0000 0000 0010

反碼 ones' complement:

符號位是 1,其余位取反。

  • -1 的反碼 = 0b 1111 1111 1111 1110
  • -2 的反碼 = 0b 1111 1111 1111 1101

補碼 two's complement :

反碼 + 1。

  • -1 的補碼 = 0b 1111 1111 1111 1111
  • -2 的補碼 = 0b 1111 1111 1111 1110

而計算機中真正用來存儲數據的是用補碼。

這里稍微注意下反碼和補碼的英文,ones' 的這個 ' 在后面,two's 的這個 ' 在中間。。

為什么計算機要用補碼來存儲數據呢?

可能有同學會說正零負零的原因,但這只是表面現象。

實際上通過補碼這樣精巧的設計,計算機做加減乘除運算就不用考慮符號,就可以讓硬件里 CPU 的設計變得異常簡單。

最初計算機只有加法器沒有減法器,所以它用這么一種方式用加法完成了減法。

int 的最大值是多少?

正是因為最左邊一位是符號位,所以正數的表示就少了一位能用的,那么 int 的最大值就是:

0111111...11 (31 ones) = 2^31 - 1 = 2147483647

7 種位運算

運算符 中文 英文 運算規則
<< 左移 left shift 右邊補充 0
>> 右移 signed right shift 左邊補充符號位
>>> 無符號右移 unsighed right shift Java 特有,左邊補充 0
~ 位非 NOT 每位取反
& 位與 bitwise AND 每位做與操作,都是 1 則為 1,否則為 0
I 位或 OR 每一位做或操作,有 1 則為 1,否則為 0
^ 異或 XOR 相同為 0,不同為 1

要注意的是前 4 個運算符是對 1 個數進行操作的,且操作完成后這個數本身的值不變(與 i++ 不同);后 3 個操作是兩個數的運算。

我們一一來看。

為了書寫方便,下面的數值雖然是 int 類型,但我只寫 8 位,大家都能理解的噢!

1. <<

左移操作就是把這些零啊壹啊的整體往左移動 n 位,右邊缺的就補充 0。

  • 1 = 0b 0000 0001
  • 1 << 1 = 0b 0000 0010 = 2
  • 2 = 0b 0000 0010
  • 2 << 1 = 0b 0000 0100 = 4
  • 3 = 0b 0000 0011
  • 3 << 1 = 0b 0000 0110 = 6

誒,大家發現沒有,左移 1 位之后這個數相當于乘2。

但是這只適用于左邊溢出的高位中不包含 1 時。

如果把 1 扔了,那就肯定不是 2 倍了嘛。

 

2. >>

右移操作就是整體往右移動 n 位,左邊缺的補充符號位。

  • 1 = 0b 0000 0001
  • 1 >> 1 = 0b 0000 0000 = 0
  • 2 = 0b 0000 0010
  • 2 >> 1 = 0b 0000 0001 = 1
  • 3 = 0b 0000 0011
  • 3 >> 1 = 0b 0000 0001 = 1

同理,正數右移操作的效果是這個數除以 2。

如果是負數呢?

  • -3 = 1111 1101
  • -3 >> 1 = 1111 1110 = -2

因為 Java 是向零取整,所以奇數時會有問題,就不再是除以 2 的結果。

總結一下,

  • 對于非負數、負數且是偶數,右移一位與除以 2 結果一樣;
  • 對于負數且是奇數,右移一位不等于除以2。

3. >>>

和 >> 的不同之處在于,這個的左邊空缺的不論正負,一律補充 0。

所以對于正數來說,和 >> 的效果一樣,但是負數不同。

  • -3 = 1111 1101
  • -3 >> 1 = 01111 1110 = 很大的數。。

4. ~

取反操作,就是每一位取反,1變成0,0變成1。

  • 3 = 0b 0000 0011
  • ~3 = 0b 1111 1100

5. &

這個符號其實和邏輯與運算 && 意思一樣,只不過作用在每一位上。

對于每一位來說,兩個數都是真,則為真,否則為假。

  • 3 = 0b 0000 0011
  • 5 = 0b 0000 0101
  • 3&5 = 0b 0000 0001

6. |

同理,和邏輯或運算 || 意思一樣,只不過作用在每一位上。

對于每一位來說,但凡有個真的就是真,否則為假。

  • 3 = 0b 0000 0011
  • 5 = 0b 0000 0101
  • 3|5 = 0b 0000 0111

7. ^

最后一個異或操作,相同為 0,不同為 1。

  • 3 = 0b 0000 0011
  • 5 = 0b 0000 0101
  • 3^5 = 0b 0000 0110

 

好啦,以上就是位運算的基本操作了,由這些運算做些巧妙的組合還可以得到很多有趣的結果,大家喜歡的話記得點贊評論哦~

本文轉載自微信公眾號「碼農田小齊」,可以通過以下二維碼關注。轉載本文請聯系碼農田小齊公眾號。

 

責任編輯:武曉燕 來源: 碼農田小齊
相關推薦

2017-04-11 10:48:53

JS二進制

2018-08-03 10:39:13

快閃

2009-12-16 10:49:42

Ruby操作二進制文件

2009-02-27 09:37:33

Google二進制代碼

2021-10-08 14:32:33

電腦二進制計算機

2009-11-02 11:27:42

VB.NET二進制文件

2010-10-13 15:45:23

MySQL二進制日志

2009-06-17 15:51:55

java有什么用

2022-10-31 08:02:42

二進制計算乘法

2018-10-22 14:37:16

二進制數據存儲

2021-02-15 15:41:41

互聯網春晚流量

2016-08-08 12:36:31

安卓系統iOS蘋果

2021-01-14 09:40:54

漏洞macOS屬性表文件

2022-07-18 09:01:15

SwiftApple二進制目標

2021-11-10 09:15:00

CPU01 二進制Linux

2011-05-25 14:10:38

浮點數

2010-06-09 13:02:29

MySQL啟用二進制日

2009-08-12 18:06:53

C#讀取二進制文件

2021-02-23 19:29:57

智能網卡SmartNIC網絡

2022-07-26 13:00:01

安全符號源代碼
點贊
收藏

51CTO技術棧公眾號

国产精品久久777777| 久久国产免费| 亚洲国产精品大全| 日韩中文字幕二区| 黄色动漫在线观看| 成人久久18免费网站麻豆| 欧美综合国产精品久久丁香| 美女网站视频色| 精品素人av| 欧美老人xxxx18| 色综合久久久久无码专区| 求av网址在线观看| 2020国产精品自拍| 91久久精品一区二区别| 久久亚洲精品石原莉奈| 欧美一区成人| 正在播放欧美视频| 一级特级黄色片| 国产一区二区三区| 欧美亚洲愉拍一区二区| 国产一二三在线视频| 日本三级在线视频| 久久综合资源网| 国产福利久久精品| 国产美女无遮挡永久免费| 噜噜噜久久亚洲精品国产品小说| 久久91精品国产91久久跳| 国产真人做爰视频免费| 亚洲精品进入| 亚洲成年网站在线观看| 天天av天天操| 白嫩亚洲一区二区三区| 欧美写真视频网站| 爱福利视频一区二区| 丝袜美女在线观看| 亚洲色图制服诱惑| 在线视频精品一区| 不卡在线视频| 国产偷国产偷亚洲高清人白洁| 国产偷国产偷亚洲高清97cao| 99久久亚洲精品日本无码| 日本va欧美va瓶| 日本精品免费观看| 毛片视频网站在线观看| 一本色道久久综合亚洲精品不| 欧美日韩高清在线观看| 2018天天弄| 综合天堂久久久久久久| 久久中文字幕视频| 中文字幕在线有码| 欧美激情综合色综合啪啪| 欧美剧在线观看| 欧美成人三级视频| 国产一区视频在线观看免费| 九九精品在线视频| 免费日韩在线视频| 激情成人综合| 4p变态网欧美系列| 特级毛片www| 美女精品网站| 国产精品女人久久久久久| 成人黄色片在线观看| 久久精品国产精品亚洲红杏| 91九色精品视频| 精品国产av 无码一区二区三区| 国产自产高清不卡| 99精品99久久久久久宅男| 国产自产一区二区| 91免费看视频| 亚洲一二三区在线| 菠萝菠萝蜜在线视频免费观看 | 久久久久亚洲av无码专区桃色| 羞羞答答一区二区| 在线观看欧美视频| 91杏吧porn蝌蚪| 激情视频一区二区三区| 日本视频久久久| 亚洲怡红院av| 国产成人精品午夜视频免费 | av中字幕久久| 久久精品最新地址| 日韩免费不卡视频| 视频一区视频二区中文| 国产精品主播视频| 高h放荡受浪受bl| 久久久久国产免费免费| 一区二区不卡视频| 波多野结衣在线播放| 色网综合在线观看| 深夜做爰性大片蜜桃| 欧美黄色网视频| 综合av色偷偷网| 国产午夜精品无码| 日本aⅴ亚洲精品中文乱码| 亚洲xxxxx电影| 三级在线播放| 亚洲卡通欧美制服中文| 黄色a级片免费| 日韩精品一级| 一区二区亚洲欧洲国产日韩| 久久久久久av无码免费网站| 日韩成人伦理电影在线观看| 亚洲综合国产精品| av在线之家电影网站| 亚洲国产日产av| 污污网站免费观看| 亚洲女娇小黑人粗硬| 欧美日韩国产二区| 亚洲天堂自拍偷拍| 久久欧美一区二区| www.成年人视频| 伊人久久大香| 亚洲天堂成人在线| 国产亚洲精久久久久久无码77777| 日本在线不卡视频| 国产一区自拍视频| 青草青在线视频| 欧美顶级少妇做爰| a级在线免费观看| 亚洲精品黄色| 91av免费看| 网友自拍视频在线| 在线一区二区三区四区五区| 日本japanese极品少妇| 欧美久久影院| 亚洲综合小说区| 日韩毛片久久久| 在线观看中文字幕不卡| 中文字幕av网址| 亚洲毛片视频| 国产免费一区二区三区| 丝袜美腿av在线| 日韩亚洲欧美在线| 一区二区三区四区五区| 麻豆高清免费国产一区| 日本高清视频一区二区三区| 日韩精品极品| 精品国产123| 国产一级片免费| 成人一级黄色片| 国产av熟女一区二区三区| 欧美日韩黄色| 欧美精品在线播放| www.午夜激情| 亚洲在线成人精品| 国产伦精品一区二区三区88av| 欧美激情一区| 国产伦精品一区二区三区照片91| 成人高潮aa毛片免费| 亚洲成人激情图| 一级片中文字幕| 久久网站最新地址| 粗暴91大变态调教| 成人久久一区| 国产在线视频欧美| 黄色网页在线免费看| 欧美伦理视频网站| 免费黄色激情视频| 国产福利91精品| 国产成人一二三区| 国产精品白丝一区二区三区| 91精品国产91久久久久久| 爽爽视频在线观看| 在线观看国产一区二区| 天天摸日日摸狠狠添| 久久se这里有精品| 男人草女人视频| 国产精品2023| 91高潮精品免费porn| 国产专区在线播放| 91超碰这里只有精品国产| 国产亚洲精品久久777777| av在线播放成人| 日韩免费毛片视频| 成人嫩草影院| 成人激情春色网| 免费在线中文字幕| 亚洲免费伊人电影在线观看av| 中文字幕一区二区人妻视频| 综合久久综合久久| av免费观看不卡| 日韩不卡在线观看日韩不卡视频| 中文网丁香综合网| 欧美日韩一本| 国产精品入口尤物| 色女人在线视频| 亚洲欧美日韩成人| 亚洲综合精品国产一区二区三区| 亚洲伊人色欲综合网| www.色天使| 国产麻豆91精品| 黄色a级片免费| 综合激情视频| 日产国产精品精品a∨| 久久伊人精品| 啪一啪鲁一鲁2019在线视频| 亚洲欧美视频一区二区| 亚洲国产精品系列| 中文字幕av在线免费观看| 亚洲综合精品久久| 女女互磨互喷水高潮les呻吟 | 久久国产亚洲| 国产精品99久久久久久久 | 91精品国产自产在线观看永久∴ | 久久视频精品在线| 天天射,天天干| 欧美日韩成人在线| 五月天激情国产综合婷婷婷| 最新热久久免费视频| 在线看黄色的网站| 国产一区二区精品在线观看| 亚洲人成色77777| 午夜久久一区| 色婷婷精品国产一区二区三区| 超碰成人97| 国产一区香蕉久久| 人人鲁人人莫人人爱精品| 欧美大片网站在线观看| 午夜在线视频| 亚洲视频精品在线| 手机av免费在线观看| 欧美日韩国产片| 成人免费毛片男人用品| 午夜久久久影院| 免费一级片在线观看| 国产精品免费丝袜| 谁有免费的黄色网址| fc2成人免费人成在线观看播放 | 欧美大片91| 国产精品一区二区久久久久| 欧美aa视频| 538国产精品视频一区二区| 黄色在线看片| 欧美另类交人妖| 国产成人在线视频免费观看| 中文字幕av一区二区三区谷原希美| 天天操天天干天天爱| 亚洲精品在线观| 亚洲av无码乱码在线观看性色| 欧美日韩国产中文| 在线视频精品免费| 色婷婷av一区二区三区大白胸 | 国产精品夜色7777狼人| 99蜜月精品久久91| 国产精品视频公开费视频| 自拍偷自拍亚洲精品被多人伦好爽| 欧美性在线观看| 捆绑调教日本一区二区三区| 性亚洲最疯狂xxxx高清| 岛国av在线网站| 国内精品久久久| 国产精品69xx| 97久久久久久| 色综合桃花网| 日韩av男人的天堂| 秋霞国产精品| 国产日韩专区在线| 国产剧情一区二区在线观看| 91久久综合亚洲鲁鲁五月天| 精品视频一区二区三区| 91青青草免费在线看| aaa国产精品视频| 精品欧美国产| 美女亚洲一区| 亚洲一区高清| 午夜电影亚洲| 日韩一级性生活片| 亚洲欧美日韩精品一区二区| 欧美自拍小视频| 久久爱另类一区二区小说| 亚洲五月激情网| 成人国产精品视频| 香蕉网在线播放| 国产亚洲一区字幕| 亚洲精品久久久久久国| 亚洲最新视频在线观看| 国产超碰人人爽人人做人人爱| 一本大道av一区二区在线播放| 五月婷婷激情五月| 91麻豆精品国产无毒不卡在线观看| 亚洲av永久无码国产精品久久| 亚洲精品大尺度| 激情在线视频| 俺去亚洲欧洲欧美日韩| 成人影音在线| 国产精品aaa| 亚洲不卡视频| 美脚丝袜一区二区三区在线观看| 欧美最新另类人妖| 日韩精品福利片午夜免费观看| 亚洲伦伦在线| 亚洲综合激情视频| www.久久久久久久久| 97在线观看免费视频| 亚洲制服欧美中文字幕中文字幕| 亚洲影院在线播放| 欧美一级欧美三级在线观看| 日韩a在线观看| 久久婷婷国产麻豆91天堂| 小视频免费在线观看| 成人信息集中地欧美| 嫩草影视亚洲| 国产一区二区三区乱码| 人人狠狠综合久久亚洲| 中文字幕天堂网| 国产精品久久久久久久久快鸭 | 91美女片黄在线观看游戏| 国产欧美自拍一区| 亚洲精品美女久久7777777| 亚洲麻豆视频| 99999精品| 国产精品嫩草影院com| 天天操夜夜操视频| 精品99一区二区三区| 黄色网页网址在线免费| 国产成人精品久久二区二区91| 亚洲一区二区免费在线观看| 亚洲欧美日韩不卡一区二区三区| 亚洲精选久久| 麻豆精品国产传媒| 国产精品久久久久影院| 亚洲 欧美 日韩 在线| 欧美精品一区二区在线播放| 老司机在线视频二区| 国产精品久久久久久久9999 | 热色播在线视频| 亚洲自拍av在线| jiujiure精品视频播放| 欧美精品99久久| av不卡在线观看| 免费在线黄色片| 51精品秘密在线观看| 最近高清中文在线字幕在线观看| 国产成人精品日本亚洲| 亚洲a级精品| 久久久噜噜噜www成人网| 福利一区在线观看| 欧美成人精品欧美一级| 日韩欧美成人一区| 日本乱理伦在线| 69174成人网| 欧美特黄a级高清免费大片a级| 三级性生活视频| 综合久久国产九一剧情麻豆| 一本久道久久综合无码中文| 综合国产在线视频| 欧美黄页免费| 一区精品在线| 国产一区二区三区在线观看免费视频 | 曰韩不卡视频| 老司机精品视频导航| 免费精品在线视频| 在线观看91av| 青草影视电视剧免费播放在线观看| 国产高清精品一区二区| 一区二区三区四区五区精品视频 | 久久久99免费| 亚洲精品国产无码| 中文字幕国产亚洲2019| 高清在线一区| 超碰在线免费观看97| 国产精品综合视频| 国产性猛交普通话对白| 日韩精品丝袜在线| 美女写真久久影院| 永久域名在线精品| 高清不卡一区二区在线| 99久热在线精品996热是什么| 亚洲日韩欧美视频| 91嫩草国产线观看亚洲一区二区 | 色综合天天狠狠| av在线资源站| 99在线首页视频| 美女尤物久久精品| 黄色片网站在线播放| 精品日产卡一卡二卡麻豆| 天堂网在线最新版www中文网| 色噜噜狠狠色综合网| 国产一区二区剧情av在线| 亚洲黄色三级视频| 中文字幕日韩在线观看| 日本少妇精品亚洲第一区| 奇米影视亚洲色图| 国产欧美日韩综合| 国产富婆一级全黄大片| 秋霞av国产精品一区| 久久精品国内一区二区三区水蜜桃| 一级黄色免费视频| 欧亚洲嫩模精品一区三区| 91最新在线视频| 欧美另类高清视频在线| 国产一区二区视频在线播放| 久久久久久久久影院| 日韩在线观看免费高清| 老汉色老汉首页av亚洲| 色婷婷成人在线| 午夜私人影院久久久久| 在线免费av网站| 韩国成人av| 国内精品写真在线观看|