02_二進(jìn)制數(shù)據(jù)(計(jì)算機(jī)科學(xué))

帶著問(wèn)題學(xué)習(xí)(二進(jìn)制數(shù)據(jù))

  • 32位是幾個(gè)字節(jié)兰珍?
  • 01011100對(duì)應(yīng)的十進(jìn)制是多少?
  • 00001111左移兩位結(jié)果是多少?有什么規(guī)律?
  • 以補(bǔ)碼形式表示的8位二進(jìn)制數(shù)11111111戒悠,十進(jìn)制為多少?
  • 二進(jìn)制和十進(jìn)制有什么區(qū)別舟山?

為什么要使用二進(jìn)制绸狐?

IC.png

????????上圖展示了一個(gè)較為簡(jiǎn)單集成電路的實(shí)例,而電腦就是由大量的集成電路芯片組成的累盗,較為熟悉的CPU就是一個(gè)十分復(fù)雜的集成芯片寒矿。
????????上圖中的每一個(gè)管腳只有兩種狀態(tài),分別是通電和不通電幅骄,那么這兩種狀態(tài)就可以對(duì)應(yīng)二進(jìn)制中的0和1劫窒,這就是為什么電腦中需要二進(jìn)制進(jìn)行運(yùn)算。

二進(jìn)制值能表達(dá)的含義

image.png

???? ??二進(jìn)制能夠表示這么多種類(lèi)的數(shù)據(jù)格式拆座,歸根結(jié)底就是在計(jì)算機(jī)中所有的數(shù)據(jù)都是以數(shù)值的形式存儲(chǔ)的,它們唯一的區(qū)別是在解析的時(shí)候不同冠息,不同的數(shù)據(jù)格式有著不同的解析方式挪凑。

二進(jìn)制和十進(jìn)制的轉(zhuǎn)換

  • 二進(jìn)制是一種計(jì)數(shù)方式
  • 二進(jìn)制值不僅僅是一個(gè)數(shù)


    image.png

    ???? ??上圖展示了一個(gè)簡(jiǎn)單的浮點(diǎn)數(shù)和二進(jìn)制數(shù)之間的轉(zhuǎn)換。

二進(jìn)制的運(yùn)算

二進(jìn)制表示負(fù)數(shù)

????????在計(jì)算機(jī)中逛艰,是如何使用二進(jìn)制表示負(fù)數(shù)呢躏碳?這就需要做一些硬性規(guī)定了,為了簡(jiǎn)單起見(jiàn)散怖,我們拿一個(gè)char類(lèi)型的數(shù)據(jù)類(lèi)型舉一個(gè)簡(jiǎn)單的例子菇绵。眾所周知,一個(gè)char類(lèi)型在計(jì)算機(jī)內(nèi)存中占據(jù)8個(gè)bit镇眷,并且它的最高bit是用來(lái)表示正負(fù)號(hào)的咬最,我們想知道-3的二進(jìn)制char類(lèi)型是什么樣子,該怎么辦呢欠动?其實(shí)很簡(jiǎn)單永乌,-3的二進(jìn)制就是+3的二進(jìn)制取反加1惑申,過(guò)程如下:
3的二進(jìn)制為:00000011
00000011取反為:11111100
11111100加1為:11111101
所以11111101就是-3的二進(jìn)制表示。
我們可以再舉一個(gè)例子翅雏,比如我們想知道-128的二進(jìn)制表示圈驼,那么根據(jù)上面的過(guò)程:
128的二進(jìn)制為:10000000
10000000取反為:01111111
01111111加1為:10000000
所以10000000就是-128的二進(jìn)制表示。
相信通過(guò)上面的兩個(gè)例子望几,您會(huì)對(duì)二進(jìn)制表示負(fù)數(shù)有一個(gè)較為深刻的了解绩脆,如果您還不是太了解,我們?cè)倥e一個(gè)簡(jiǎn)單的減法運(yùn)算橄抹,比如10-7=衙伶?,我們知道害碾,在計(jì)算機(jī)中矢劲,是沒(méi)有減法運(yùn)算的,它只有加法運(yùn)算慌随,所以我們不得不把上式改寫(xiě)為:10+(-7)=?芬沉,這樣才能被計(jì)算機(jī)直接計(jì)算。現(xiàn)在的問(wèn)題就是如何找到-7的二進(jìn)制表示阁猜,和上面的方法一樣:
7的二進(jìn)制表示為:00000111
00000111取反為:11111000
11111000加1為:11111001
所以-7的二進(jìn)制為:11111001
而10的二進(jìn)制為:00001010
所以10+(-7)=00001010+11111001得出100000011共9bit丸逸,但是我們的數(shù)據(jù)類(lèi)型是char,它只有8bit剃袍,所以不得不把最高位1舍棄黄刚,得到10+(-7)=00000011的值為3,和我們用十進(jìn)制算的結(jié)果一模一樣民效。
相信大家通過(guò)這幾個(gè)例子憔维,會(huì)對(duì)二進(jìn)制表示負(fù)數(shù)以及計(jì)算機(jī)中對(duì)減法是如何操作了吧!N沸稀业扒!

按位運(yùn)算符

????????C語(yǔ)言提供了6個(gè)位操作運(yùn)算符。這些運(yùn)算符只能作用于整型操作數(shù)舒萎,即只能作用于帶符號(hào)或者無(wú)符號(hào)的char程储、short、int臂寝、long類(lèi)型:

  1. & 按位與(AND)章鲤;
  2. | 按位或(OR);
  3. ^按位異或(XOR)咆贬;
  4. << 左移败徊;
  5. 右移;

  6. ~按位求反(一元運(yùn)算符)素征。
二進(jìn)制的按位與運(yùn)算符(&)

????????只有兩個(gè)位都是1的時(shí)候集嵌,這時(shí)的結(jié)果才是1萝挤,其它所有情況的結(jié)果都是0,比如:
1 & 1 的結(jié)果是:1根欧;
1 & 0 的結(jié)果是:0怜珍;
0 & 1 的結(jié)果是:0;
0 & 0 的結(jié)果是:0凤粗。

二進(jìn)制的按位或運(yùn)算符(|)

????????只有兩個(gè)位都是0的時(shí)候酥泛,這時(shí)的結(jié)果才是0,其它所有情況的結(jié)果都是1嫌拣,比如:
1 | 1 的結(jié)果是:1柔袁;
1 | 0 的結(jié)果是:1;
0 | 1 的結(jié)果是:1异逐;
0 | 0 的結(jié)果是:0捶索。

二進(jìn)制的按位異或運(yùn)算符(^)

????????只有兩個(gè)位不相等的時(shí)候,這時(shí)的結(jié)果才是1灰瞻,其它所有情況的結(jié)果都是0腥例,比如:
1 ^ 1 的結(jié)果是:0;
1 ^ 0 的結(jié)果是:1酝润;
0 ^ 1 的結(jié)果是:1燎竖;
0 ^ 0 的結(jié)果是:0。

二進(jìn)制左移

????????假如有一個(gè)char類(lèi)型的變量要销,它的值為3构回,那么它的二進(jìn)制表示為:00000011,分別左移1位疏咐、2位和3位纤掸,我們看得到的數(shù)值是多少!
00000011左移1位凳鬓,得到00000110茁肠,它的值為6;
00000011左移2位缩举,得到00001100,它的值為12匹颤;
00000011左移3位仅孩,得到00011000,它的值位24,印蓖;
從上面不難得到這樣的一個(gè)規(guī)律辽慕,就是在不溢出的情況下,左移幾位赦肃,就表示原來(lái)的數(shù)乘以2的多少次冪溅蛉。

二進(jìn)制右移

????????邏輯右移:我們把左邊全部補(bǔ)0公浪,不考慮符號(hào)位的右移稱(chēng)為邏輯右移。
????????二進(jìn)制的右移就不像二進(jìn)制左移那樣簡(jiǎn)單了船侧。我們先看一個(gè)例子欠气,還是以一個(gè)char類(lèi)型的變量為例,它的值為-128镜撩,讓它右移2位预柒,如果按照左移的規(guī)律,那么-128右移2位的值應(yīng)該是-128除以2的2次冪袁梗,即-32宜鸯。那么我們下面來(lái)右移一下看看。我們?cè)偻频挂淮?128的二進(jìn)制表示:
128的二進(jìn)制表示為:10000000(這里我們先不考慮最高位表示正負(fù)號(hào)遮怜,只是考慮數(shù)值的大辛苄洹);
10000000取反后為:01111111锯梁;
01111111加1為:10000000即碗;
所以-128的二進(jìn)制表示為10000000。
假如我們還是按照左移的方式右移涝桅,那么10000000右移2位位00100000拜姿,很顯然這不是一個(gè)負(fù)數(shù),因?yàn)樨?fù)數(shù)的最高位是1冯遂,這不是我們想要的結(jié)果蕊肥,我們稱(chēng)這樣的右移為邏輯右移。
????????算術(shù)右移:左邊補(bǔ)的數(shù)和符號(hào)有關(guān)的右移稱(chēng)為算術(shù)右移蛤肌。
????????我們還是拿char類(lèi)型的變量壁却,值為-128來(lái)舉例子。從上面知道-128的二進(jìn)制表示為:10000000裸准。那么它算術(shù)右移2位是11100000,11100000是-32嗎展东?一般人不好看出來(lái),不過(guò)沒(méi)關(guān)系炒俱,我們推倒一下-32的二進(jìn)制不就行了嘛Q嗡唷!权悟!
32的二進(jìn)制表示為:00100000砸王;
00100000取反后為:11011111;
11011111加1為:11100000峦阁。
所以-128算術(shù)右移后的二進(jìn)制11100000值就是-32谦铃。
無(wú)論是邏輯右移還是算術(shù)右移,它們都有存在的意義榔昔。在單片機(jī)編程中驹闰,比如跑馬燈程序的編寫(xiě)瘪菌,就有可能需要邏輯右移,但是這些又不是數(shù)值嘹朗,更不是負(fù)數(shù)师妙,它只是一些簡(jiǎn)單的數(shù)據(jù)。

二進(jìn)制的按位求反運(yùn)算符(~)

????????取反就是將0變成1.將1變成0骡显,比如:
~1 的結(jié)果是:0疆栏;
~0 的結(jié)果是:1。

二進(jìn)制數(shù)表示浮點(diǎn)數(shù)

關(guān)于浮點(diǎn)數(shù)的計(jì)算惫谤,這里有一個(gè)比較好的參考壁顶。
二進(jìn)制表示浮點(diǎn)數(shù)
我們大概了解計(jì)算機(jī)中的浮點(diǎn)數(shù)是IEEE制定的一套表示方法,它的表示形式是科學(xué)計(jì)數(shù)法溜歪,如果想深入了解浮點(diǎn)數(shù)的表示請(qǐng)參考上面的鏈接若专,也可以自行查其它的資料,這里我們就不做深入講解了蝴猪。
由于計(jì)算機(jī)表示的浮點(diǎn)數(shù)大多數(shù)都是不精確的调衰,只有部分小數(shù)是精確的(比如0.5、0.25自阱、0.125等等)嚎莉,所以對(duì)于我們程序來(lái)說(shuō),重點(diǎn)要做的是:

  1. 不使用浮點(diǎn)數(shù)直接進(jìn)行運(yùn)算沛豌,而是使用整數(shù)進(jìn)行運(yùn)算趋箩,得到結(jié)果后,再除以相應(yīng)的倍數(shù)加派,這樣得到的結(jié)果才比較可靠叫确;
  2. 在誤差允許的情況下可以直接使用浮點(diǎn)數(shù)進(jìn)行運(yùn)算。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芍锦,一起剝皮案震驚了整個(gè)濱河市竹勉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌娄琉,老刑警劉巖次乓,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異孽水,居然都是意外死亡檬输,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)匈棘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人析命,你說(shuō)我怎么就攤上這事主卫√幽” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵簇搅,是天一觀的道長(zhǎng)完域。 經(jīng)常有香客問(wèn)我,道長(zhǎng)瘩将,這世上最難降的妖魔是什么吟税? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮姿现,結(jié)果婚禮上肠仪,老公的妹妹穿的比我還像新娘。我一直安慰自己备典,他們只是感情好异旧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著提佣,像睡著了一般吮蛹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拌屏,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天潮针,我揣著相機(jī)與錄音,去河邊找鬼倚喂。 笑死每篷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的务唐。 我是一名探鬼主播雳攘,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼枫笛!你這毒婦竟也來(lái)了吨灭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤刑巧,失蹤者是張志新(化名)和其女友劉穎喧兄,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體啊楚,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吠冤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恭理。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拯辙。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涯保,到底是詐尸還是另有隱情诉濒,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布夕春,位于F島的核電站未荒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏及志。R本人自食惡果不足惜片排,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望速侈。 院中可真熱鬧率寡,春花似錦、人聲如沸锌畸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)潭枣。三九已至比默,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盆犁,已是汗流浹背命咐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谐岁,地道東北人醋奠。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像伊佃,于是被迫代替她去往敵國(guó)和親窜司。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容