国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一篇帶給你~0 == -1 問題全解

開發(fā) 后端
今天帶大家復(fù)習(xí)一個(gè)容易遺忘的C語言知識(shí)點(diǎn),負(fù)數(shù)的存儲(chǔ)及其一個(gè)典型考察形式。

[[380692]]

 今天帶大家復(fù)習(xí)一個(gè)容易遺忘的C語言知識(shí)點(diǎn),負(fù)數(shù)的存儲(chǔ)及其一個(gè)典型考察形式。

我們先看一個(gè)題目

  1. #include<stdio.h> 
  2.  
  3. int main() 
  4.  int a,b,c,d;   //或者   int a,b,c,d; 
  5.  a=0x8; 
  6.  b=a>>1; 
  7.  c=~(~0<<1); 
  8.  d=b&c; 
  9.  printf("c is %d\n",c); 
  10.  printf("d is %d\n",d); 

 

解析:

假設(shè)計(jì)算機(jī)是存儲(chǔ)八位

  1. 0的存儲(chǔ)是   0b 0000 0000 
  2. ~按位取反   0b 1111 1111 
  3. 左移一位    0b 1111 1110     空檔處補(bǔ)0 
  4. 再按位取反  0b 0000 0001 
  5.  
  6. 所以c就等于1 

這里是一步一步推導(dǎo)過來的,你會(huì)忽略一個(gè)關(guān)鍵的過程,就是~0你算出來的,是0b 1111 1111,一個(gè)很大的負(fù)數(shù),這和你以為的常理違背,我們下面討論。

再次舉例

  1. #include <stdio.h> 
  2. int main() 
  3.     printf("~0 == %d\n", ~0); 

 

  1. 0的存儲(chǔ)是   0b 0000 0000 
  2. ~按位取反   0b 1111 1111 

這個(gè)題目比較干脆,直接是~0 == -1,有的時(shí)候我們不明白,為什么0b 1111 1111在內(nèi)存中代表-1,因?yàn)樗麩o論如何也是一個(gè)很大的負(fù)數(shù)才對(duì)。

可是實(shí)際上,負(fù)數(shù)在內(nèi)存中是按照補(bǔ)碼的形式存儲(chǔ)的,也就是說0b 1111 1111是一個(gè)補(bǔ)碼,那么它的反碼就是0b 1111 1110,原碼就是0b 1000 0001,也就是-1(注意負(fù)數(shù)求反碼補(bǔ)碼的時(shí)候符號(hào)位不變)

結(jié)論

  1. 0b 1111 1111 == -1 (~0) 
  2.  
  3. 0b 1111 1110 == -2 (~1) 
  4.  
  5. 0b 1111 1101 == -3 (~2) 

可以把它當(dāng)做一個(gè)公式 ~a == -【a+1】

補(bǔ)充說明

為什么整數(shù)要在內(nèi)存中按照補(bǔ)碼儲(chǔ)存。因?yàn)檎龜?shù)的原碼反碼補(bǔ)碼都一樣,所以我們主要討論問什么負(fù)數(shù)在內(nèi)存中按照補(bǔ)碼方式存儲(chǔ)。

采用補(bǔ)碼的原因或好處如下,采用補(bǔ)碼運(yùn)算具有如下兩個(gè)特征:

1)因?yàn)槭褂醚a(bǔ)碼可以將符號(hào)位和其他位統(tǒng)一處理,同時(shí),減法也可以按加法來處理,即如果是補(bǔ)碼表示的數(shù),不管是加減法都直接用加法運(yùn)算即可實(shí)現(xiàn)。

2)兩個(gè)用補(bǔ)碼表示的數(shù)相加時(shí),如果最高位(符號(hào)位)有進(jìn)位,則進(jìn)位被舍棄。

這樣的運(yùn)算有兩個(gè)好處:

1)使符號(hào)位能與有效值部分一起參加運(yùn)算,從而簡化運(yùn)算規(guī)則。從而可以簡化運(yùn)算器的結(jié)構(gòu),提高運(yùn)算速度。(減法運(yùn)算可以用加法運(yùn)算表示出來)

2)加法運(yùn)算比減法運(yùn)算更易于實(shí)現(xiàn)。使減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算,進(jìn)一步簡化計(jì)算機(jī)中運(yùn)算器的線路設(shè)計(jì)。

下圖最能說明為什么用補(bǔ)碼可以使整數(shù)的減法運(yùn)算(即負(fù)數(shù)的運(yùn)算)變?yōu)榧臃ㄟ\(yùn)算:


深入證明:

用帶符號(hào)位的原碼進(jìn)行乘除運(yùn)算時(shí)結(jié)果正確,而在加減運(yùn)算的時(shí)候就出現(xiàn)了問題,如下:假設(shè)字長為8bits

  1. ( 1 ) - ( 1 ) = ( 1 ) + ( -1 ) = ( 0 ) 
  2. 可以表示為: 
  3. (00000001)原 + (10000001)原 = (10000010)原 = ( -2 ) 顯然不正確.。 

因?yàn)樵趦蓚€(gè)整數(shù)的加法運(yùn)算中是沒有問題的,于是就發(fā)現(xiàn)問題出現(xiàn)在帶符號(hào)位的負(fù)數(shù)身上,對(duì)除符號(hào)位外的其余各位逐位取反就產(chǎn)生了反碼。反碼的取值空間和原碼相同且一一對(duì)應(yīng)。下面是反碼的減法運(yùn)算:

  1. ( 1 ) - ( 1 ) = ( 1 ) + ( -1 ) = ( 0 ) 
  2. 可以表示為: 
  3. (00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有問題。 
  4.  
  5. ( 1 ) - ( 2) = ( 1 ) + ( -2 ) = ( -1 ) 
  6. 可以表示為: 
  7. (00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正確 

問題出現(xiàn)在(+0)和(-0)上,在人們的計(jì)算概念中零是沒有正負(fù)之分的。

于是就引入了補(bǔ)碼概念。負(fù)數(shù)的補(bǔ)碼就是對(duì)反碼加一,而正數(shù)不變,正數(shù)的原碼反碼補(bǔ)碼是一樣的。在補(bǔ)碼中用(-128)代替了(-0),所以補(bǔ)碼的表示范圍為:

(-128~127)共256個(gè)。

注意:(-128)沒有相對(duì)應(yīng)的原碼和反碼, (-128) = (10000000) 補(bǔ)碼的加減運(yùn)算如下:

  1. ( 1 ) - ( 1 ) = ( 1 ) + ( -1 ) = ( 0 ) 
  2. 可以表示為: 
  3. (00000001)補(bǔ) + (11111111)補(bǔ) = (00000000)補(bǔ) = ( 0 ) 正確 
  4.  
  5. ( 1 ) - ( 2) = ( 1 ) + ( -2 ) = ( -1 ) 
  6. 可以表示為: 
  7. (00000001) 補(bǔ)+ (11111110) 補(bǔ)= (11111111)補(bǔ) = ( -1 ) 正確 

采用補(bǔ)碼表示還有另外一個(gè)原因,那就是為了防止0的機(jī)器數(shù)有兩個(gè)編碼。原碼和反碼表示的0有兩種形式+0和-0,而我們知道,+0和-0是相同的。這樣,8位的原碼和反碼表示的整數(shù)的范圍就是-127-127(11111111-01111111),而采用補(bǔ)碼表示的時(shí)候,00000000是+0,即0;10000000不再是-0,而是-128,這樣,補(bǔ)碼表示的數(shù)的范圍就是-128~+127了,不但增加了一個(gè)數(shù)得表示范圍,而且還保證了0編碼的唯一性。

為什么正數(shù)的反碼,補(bǔ)碼和原碼一樣?這是規(guī)定或者說這是約定,沒有多少道理,你算是算不出來的。

補(bǔ)碼只是為負(fù)數(shù)想出來的辦法,目的是減法變加法。是減法可以用加補(bǔ)碼的方法實(shí)現(xiàn)。補(bǔ)碼可用反碼加1得來。于是道又有了負(fù)數(shù)的反碼。

計(jì)算機(jī)里有硬件“加法器”,有了補(bǔ)碼,減法也可以用加法器做了。計(jì)算機(jī)里運(yùn)算速度,硬件遠(yuǎn)快于軟件。這是弄出反碼,補(bǔ)碼和原碼花樣的原因。

形象說明

引進(jìn)補(bǔ)碼的作用是為了讓計(jì)算機(jī)更方便做減法,比如說,按時(shí)間12個(gè)小時(shí)來算,現(xiàn)在的準(zhǔn)確時(shí)間是4點(diǎn),有一個(gè)表顯示的是7點(diǎn),要校準(zhǔn)時(shí)間,我們可以將時(shí)針退7-4=3格,也可以向前撥12-3=9格,計(jì)算機(jī)做減法就可以轉(zhuǎn)化成-3=+9,這樣可以簡化計(jì)算機(jī)的硬件設(shè)備去做復(fù)雜的減法。

 

責(zé)任編輯:姜華 來源: 嵌入式Linux系統(tǒng)開發(fā)
相關(guān)推薦

2022-04-18 08:57:32

React 18前端

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2021-07-08 07:30:13

Webpack 前端Tree shakin

2021-10-28 08:51:53

GPIO軟件框架 Linux

2021-04-23 08:59:35

ClickHouse集群搭建數(shù)據(jù)庫

2022-02-25 15:50:05

OpenHarmonToggle組件鴻蒙

2021-04-14 07:55:45

Swift 協(xié)議Protocol

2023-03-13 09:31:04

2021-05-08 08:36:40

ObjectString前端

2021-01-28 08:55:48

Elasticsear數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)

2021-06-21 14:36:46

Vite 前端工程化工具

2023-03-29 07:45:58

VS編輯區(qū)編程工具

2021-04-01 10:51:55

MySQL鎖機(jī)制數(shù)據(jù)庫

2021-04-14 14:16:58

HttpHttp協(xié)議網(wǎng)絡(luò)協(xié)議

2021-07-21 09:48:20

etcd-wal模塊解析數(shù)據(jù)庫

2022-03-22 09:09:17

HookReact前端

2024-06-13 08:34:48

2021-04-08 11:00:56

CountDownLaJava進(jìn)階開發(fā)

2022-04-29 14:38:49

class文件結(jié)構(gòu)分析

2021-03-12 09:21:31

MySQL數(shù)據(jù)庫邏輯架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久草在线免费二| 国产成人综合美国十次| 凹凸日日摸日日碰夜夜爽1| 亚洲国产一区在线| 一区二区精品在线观看| 涩涩视频免费网站| 高潮在线视频| 牛牛影视久久网| 欧美一区二区三区在线电影| 97在线视频免费| 奇米777四色影视在线看| 99色在线观看| 老司机精品导航| 亚洲一区二三区| 中日韩午夜理伦电影免费 | 日韩成人网免费视频| 久久亚洲精品成人| 一区二区三区四区视频在线| 视频在线不卡| 亚洲精品少妇| 欧美日韩亚洲一区二区| 国产成人免费av| 精品免费国产一区二区| 国内精品久久久久国产| 亚洲乱码免费伦视频| 国产精品天美传媒沈樵| 粉嫩欧美一区二区三区高清影视| 欧美一级午夜免费电影| 久久综合给合久久狠狠色| 免费黄色在线网站| 久久久久久久久久久久久久久久久久久久| 欧美大片aaa| 久久久免费毛片| 久久久久国色av免费看影院| 久久精品夜夜夜夜夜久久| 国产精品色悠悠| www亚洲人| 视频一区在线视频| 亚洲性夜色噜噜噜7777| 国产素人在线观看| 狠狠久久伊人中文字幕| 久久久99免费| 色黄久久久久久| 黄色一级片在线看| 99在线播放| 亚洲国产精品成人| 国产精品女同互慰在线看| 伊人伊人伊人久久| 无码日本精品xxxxxxxxx| jizzyou欧美16| 欧美激情在线观看视频免费| 在线观看亚洲视频啊啊啊啊| 欧美又大粗又爽又黄大片视频| 97视频在线观看亚洲| 欧美在线中文字幕| 成人免费看吃奶视频网站| 91欧美激情另类亚洲| 国产视频一区二区三区四区| 日韩欧美精品在线不卡| 国产亚洲精品久久久久久久| 欧美日韩黄色一级片| 亚洲综合婷婷久久| 在线观看黄网| 国产三区在线观看| 日韩av大片站长工具| 天堂va欧美ⅴa亚洲va一国产| 色综合www| 国一区二区在线观看| 99国产精品久久久久久久| 麻豆成人在线观看| 99麻豆久久久国产精品免费优播| 欧美福利视频| 亚洲自拍高清视频网站| 国产91精品久| 国产视频三区| 秋霞影院一区二区| 日本男人操女人| 波多野结衣在线观看| 懂色av一区二区三区免费观看 | 超碰在线免费播放| 91九色porny视频| 欧美女优在线观看| 色呦呦呦在线观看| 日韩中文字幕在线一区| 国产精品麻豆久久| 久久99精品国产.久久久久久 | 91精品国产毛片武则天| 激情视频综合网| 伦理片一区二区三区| 美女在线视频免费| 97人人做人人爽香蕉精品| 日韩一级完整毛片| 人人干在线视频| 亚洲午夜精品网| 国产精品成人久久电影| 亚洲欧美色图| 欧美激情视频网站| 日韩电影精品| 在线观看视频亚洲| 九色视频网站入口| 大西瓜av在线| 白天操夜夜操| 手机电影在线观看| 99视频这里有精品| 国产成人在线免费| 国产欧美在线一区二区| 奇米影视777在线欧美电影观看| 最新日韩中文字幕| 欧美影视资讯| 亚洲最大在线视频| 人成在线免费网站| 精品成人在线观看| 中文字幕乱码在线播放| 精品捆绑美女sm三区| 91福利国产在线观看菠萝蜜| 69堂亚洲精品首页| 国产v日韩v欧美v| 欧美一区午夜视频在线观看| 中文字幕不卡| 久色乳综合思思在线视频| 国产一区二区四区| 国产一区二区免费在线| 青青视频免费在线| 蜜臀久久99精品久久久久久9 | 成人美女免费网站视频| 伊人国产精品| 激情成人在线视频| 久久.com| 夜夜嗨av一区二区三区中文字幕 | 国产综合久久久久| 一区不卡视频| 真不卡电影网| 欧美风情在线视频| 99人久久精品视频最新地址| 国产欧美一二三区| 亚洲精品短视频| 91免费综合在线| 丰满人妻中伦妇伦精品app| 黄色成年人视频在线观看| 一本久久青青| 成人动漫在线一区| 色婷婷综合久久| 国产在线观看a视频| 精品国产乱码久久久久久浪潮| 美女扒开腿让男人桶爽久久软| 亚洲人在线视频| 国产一区二区三区国产精品| 国内成人精品一区| 五月开心六月丁香综合色啪 | 国产成人毛片| 久久久久久久爱| 午夜日韩激情| 日本xxxxx18| 在线亚洲一区二区| 夜色福利刺激| segui88久久综合| 亚洲成人网久久久| 日韩毛片免费看| 91精品一区二区三区四区| 欧美精品一区二区三区视频| 亚洲一区二区国产| 久久久综合香蕉尹人综合网 | 手机成人av在线| 2017亚洲天堂1024| 第一社区sis001原创亚洲| 久久色.com| 91国产福利在线| 中老年在线免费视频| 国产精品久久久久77777| 久久人人97超碰国产公开结果| 日本一级黄视频| 亚洲人123区| 婷婷综合六月| 国产一区二区三区在线视频 | 日本在线免费| 欧美日韩亚洲一区二区三区在线观看| 欧美成人国产一区二区| 99久久99久久精品国产片桃花 | 成人免费网址| 人体精品一二三区| 老司机一区二区| 视频一区二区三区国产| 美女黄色片网站| 欧美日本在线播放| 亚洲黄色免费| 国产在线视频网| 成人免费网站视频www| 久久gogo国模啪啪裸体| 高清不卡在线观看| 日韩av午夜| 99久久国产综合精品五月天喷水| 欧美视频在线一区二区三区| 欧美日韩大片免费观看| 日韩精品免费综合视频在线播放 | 亚洲美女久久精品| 国产福利成人在线| 日本一区二区三区免费乱视频| 日韩成人影音| 亚洲精品欧美精品| 在线精品视频视频中文字幕|