中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Java位運(yùn)算-創(chuàng)新互聯(lián)

基本移位

左移沒區(qū)別;
右移: 有符號(hào)補(bǔ)符號(hào)位 (>>); 沒符號(hào)補(bǔ) 0;

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)徽州,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
  1. <<表示 左移
    不分正負(fù)數(shù),低位補(bǔ) 0
  2. >>表示 右移
    如果該數(shù)為正,則高位補(bǔ) 0
    若為負(fù)數(shù),則高位補(bǔ)符號(hào)位 (i.e. 1)
  3. >>>表示 無符號(hào)右移, 也叫邏輯右移
    如果該數(shù)為正,則高位補(bǔ) 0
    而若該數(shù)為負(fù)數(shù),則右移后高位同樣補(bǔ) 0
算術(shù)移位 和 邏輯移位
  1. 邏輯移位: 就是無符號(hào)移位, 左移<<<和 右移>>>都是補(bǔ)零
  2. 算術(shù)移位: 算術(shù)移位是對(duì) 有符號(hào)數(shù) 進(jìn)行的, 符號(hào)位不變, 對(duì)數(shù)值位進(jìn)行移動(dòng)補(bǔ) 0 (針對(duì)原碼)
  • 區(qū)別:
    • 邏輯右移 最高位不管是什么都用 0 填充 (相當(dāng)于無符號(hào)數(shù)除 2)
    • 算術(shù)右移 最高位 (符號(hào)位) 不變, 原碼剩余部分補(bǔ) 0 (相當(dāng)于有符號(hào)數(shù)除 2); 補(bǔ)碼剩余部分補(bǔ)符號(hào)位

算術(shù)移位中, 實(shí)際設(shè)計(jì)硬件只實(shí)現(xiàn)了補(bǔ)碼的算術(shù)移位, 所以右移符合上面的基本移位: 加符號(hào)位

python 右移

The right shift in python is arithmetical. 只有算術(shù)右移

由于 Python 沒有無符號(hào)數(shù),因此它不包含無符號(hào)移位 (沒有>>>)

補(bǔ)碼

tldr;
正數(shù)的補(bǔ)碼是本身;
0 的補(bǔ)碼是 0;
負(fù)數(shù)的補(bǔ)碼是: 符號(hào)位不變, 數(shù)據(jù)位取反, 再 +1 (不會(huì)溢出, 因?yàn)闀?huì)溢出的大值是 -0, 反碼 11111111)

計(jì)算機(jī)中的有符號(hào)數(shù)有三種表示方法,即原碼 original code、反碼 inverse code 和 補(bǔ)碼 complement code

三種表示方法均有符號(hào)位和數(shù)值位兩部分,符號(hào)位都是用0表示“正”,用1表示“負(fù)”

而數(shù)值位,三種表示方法各不相同

在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來表示和存儲(chǔ) (原因在于,使用補(bǔ)碼,可以將符號(hào)位和數(shù)值域 統(tǒng)一處理;同時(shí),加法和減法也可以統(tǒng)一處理)

介紹

在介紹補(bǔ)碼概念之前,先介紹一下“模”的概念:“?!笔侵敢粋€(gè)計(jì)量系統(tǒng)的計(jì)數(shù)范圍,如過去計(jì)量糧食用的斗、時(shí)鐘等。計(jì)算機(jī)也可以看成一個(gè)計(jì)量機(jī)器,因?yàn)橛?jì)算機(jī)的字長(zhǎng)是定長(zhǎng)的,即存儲(chǔ)和處理的位數(shù)是有限的,因此它也有一個(gè)計(jì)量范圍,即都存在一個(gè)“?!?。

如:時(shí)鐘的計(jì)量范圍是 0~11,模 = 12。表示 n 位的計(jì)算機(jī)計(jì)量范圍是 0 ~ 2n- 1,模 = 2n.“?!?實(shí)質(zhì)上是計(jì)量器產(chǎn)生“溢出”的量,它的值在計(jì)量器上表示不出來,計(jì)量器上只能表示出模的余數(shù)。任何有模的計(jì)量器,均可化減法為加法運(yùn)算。也就是取反后加 1。

假設(shè)當(dāng)前時(shí)針指向 8 點(diǎn),而準(zhǔn)確時(shí)間是 6 點(diǎn),調(diào)整時(shí)間可有以下兩種撥法:

  1. 一種是倒撥 2 小時(shí),即8-2=6;
  2. 另一種是順撥 10 小時(shí),8+10=12+6=6,即8-2=8+10=8+12-2(mod 12).

在 12 為模的系統(tǒng)里,加 10 和減 2 效果是一樣的,因此凡是減 2 運(yùn)算,都可以用加 10 來代替。若用一般公式可表示為:

a-b=a-b+mod=a+mod-b

對(duì)“?!倍裕? 和 10 互為補(bǔ)數(shù)。實(shí)際上,以 12 為模的系統(tǒng)中,11 和 1,8 和 4,9 和 3,7 和 5,6 和 6 都有這個(gè)特性,共同的特點(diǎn)是兩者相加等于模。對(duì)于計(jì)算機(jī),其概念和方法完全一樣。n位計(jì)算機(jī),設(shè)n=8,所能表示的大數(shù)是 11111111,若再加 1 成 100000000 (9位),但因只有 8 位,最高位 1 自然丟失(相當(dāng)于丟失一個(gè)模)。又回到了 00000000,所以 8 位二進(jìn)制系統(tǒng)的模為。在這樣的系統(tǒng)中減法問題也可以化成加法問題,只需把減數(shù)用相應(yīng)的補(bǔ)數(shù)表示就可以了。

把補(bǔ)數(shù)用到計(jì)算機(jī)對(duì)數(shù)的處理上,就是補(bǔ)碼。

原碼求補(bǔ)碼
  1. 求給定數(shù)值的補(bǔ)碼分以下兩種情況:
    1. 正數(shù): 正整數(shù)的補(bǔ)碼是其二進(jìn)制表示,與原碼相同
      例:+9 的補(bǔ)碼是 00001001。(備注:這個(gè)+9的補(bǔ)碼是用8位2進(jìn)制來表示的,補(bǔ)碼表示方式很多,還有 16 位二進(jìn)制補(bǔ)碼表示形式,以及 32 位二進(jìn)制補(bǔ)碼表示形式,64 位進(jìn)制補(bǔ)碼表示形式等。每一種補(bǔ)碼表示形式都只能表示有限的數(shù)字)
    2. 負(fù)數(shù): 求負(fù)整數(shù)的補(bǔ)碼,將其原碼除符號(hào)位外的所有位取反(0變1,1變0,符號(hào)位為1不變)后加 1
  2. 0 的補(bǔ)碼: 數(shù) 0 的補(bǔ)碼表示是唯一的
    [+0]補(bǔ) = [+0]反 = [+0]原 = 00000000
    [-0]補(bǔ) = 11111111 + 1 = 00000000
補(bǔ)碼求原碼

已知一個(gè)數(shù)的補(bǔ)碼,求原碼的操作其實(shí)就是對(duì)該補(bǔ)碼再求補(bǔ)碼:

  1. 如果補(bǔ)碼的符號(hào)位為 “0”,表示是一個(gè)正數(shù),其原碼就是補(bǔ)碼
  2. 如果補(bǔ)碼的符號(hào)位為 “1”,表示是一個(gè)負(fù)數(shù),那么求給定的這個(gè)補(bǔ)碼的補(bǔ)碼 (再求補(bǔ)碼) 就是要求的原碼
    例:已知一個(gè)補(bǔ)碼為 11111001,則原碼是 10000111(-7)。
    解:因?yàn)榉?hào)位為 “1”,表示是一個(gè)負(fù)數(shù)。
    所以符號(hào)位不變,仍為“1”。其余七位 1111001 取反后為 0000110;再加 1,所以是 10000111。
意義

補(bǔ)碼“?!备拍畹囊?、負(fù)數(shù)補(bǔ)碼的實(shí)質(zhì)、以及補(bǔ)碼和真值之間的關(guān)系, 所揭示的補(bǔ)碼符號(hào)位所具有的數(shù)學(xué)特征,無不體現(xiàn)了補(bǔ)碼在計(jì)算機(jī)中表示數(shù)值型數(shù)據(jù)的優(yōu)勢(shì),和原碼、反碼等相比可表現(xiàn)在如下方面:

  1. 解決了符號(hào)的表示的問題
  2. 可以將減法運(yùn)算轉(zhuǎn)化為補(bǔ)碼的加法運(yùn)算來實(shí)現(xiàn),克服了原碼加減法運(yùn)算繁雜的弊端,可有效簡(jiǎn)化運(yùn)算器的設(shè)計(jì)
  3. 在計(jì)算機(jī)中,利用電子器件的特點(diǎn)實(shí)現(xiàn)補(bǔ)碼和真值、原碼之間的相互轉(zhuǎn)換,非常容易
  4. 補(bǔ)碼表示統(tǒng)一了符號(hào)位和數(shù)值位,使得符號(hào)位可以和數(shù)值位一起直接參與運(yùn)算,這也為后面設(shè)計(jì)乘法器除法器等運(yùn)算器件提供了極大的方便

總之,補(bǔ)碼概念的引入和當(dāng)時(shí)運(yùn)算器設(shè)計(jì)的背景不無關(guān)系,從設(shè)計(jì)者角度,既要考慮表示的數(shù)的類型(小數(shù)、整數(shù)、實(shí)數(shù)和復(fù)數(shù))、數(shù)值范圍精確度,又要考慮數(shù)據(jù)存儲(chǔ)和處理所需要的硬件代價(jià)。因此,使用補(bǔ)碼來表示機(jī)器數(shù)并得到廣泛的應(yīng)用也就不難理解了

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

新聞標(biāo)題:Java位運(yùn)算-創(chuàng)新互聯(lián)
鏈接URL:http://m.rwnh.cn/article20/popjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)定制網(wǎng)站、面包屑導(dǎo)航做網(wǎng)站、網(wǎng)站排名、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
开平市| 昆明市| 宝山区| 平定县| 沭阳县| 甘德县| 石林| 绥江县| 湟中县| 扶绥县| 韶关市| 日照市| 三亚市| 文成县| 上饶县| 玛沁县| 屏山县| 綦江县| 禹州市| 莱阳市| 阿克苏市| 龙里县| 青河县| 汝阳县| 宁国市| 文水县| 凌源市| 宜昌市| 界首市| 楚雄市| 巴林右旗| 庆元县| 内丘县| 山西省| 五寨县| 波密县| 大庆市| 原平市| 囊谦县| 景德镇市| 弥勒县|