<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    計(jì)算機(jī)中[1]和[-1]的趣事.

    首先感謝南老師!

    ??????在計(jì)算機(jī)里的有符號(hào)數(shù),最高位的1用來(lái)表示負(fù)號(hào),所以,用 0000 0001表示正1,1000 0001表示-1,確實(shí)對(duì)人來(lái)說(shuō)很直觀。但其實(shí),計(jì)算機(jī)里的數(shù)是用“補(bǔ)碼”表示的。其中正數(shù)的補(bǔ)碼就是原來(lái)的數(shù)(稱為原碼),而負(fù)數(shù)的補(bǔ)碼是這么算的,我用倒推的來(lái)說(shuō):
    ??????補(bǔ)碼 = 反碼 + 1
    ??????反碼 = 原碼按位取反(1變0,0變1)
    ??????所以,-1就是1取補(bǔ)碼,過(guò)程如下:
    ??????先取反 0000 0001 ---> 1111 1110?
    ??????然后加1得補(bǔ)碼: 1111 1110 + 1 = 1111 1111?
    ????(當(dāng)然這里為了方便,就取了8位,其實(shí)整數(shù)現(xiàn)在都是32位了,結(jié)果是32個(gè)1)。

    ?????現(xiàn)在,你知道如何計(jì)算-2了嗎? 為什么要搞反碼,補(bǔ)碼這么個(gè)轉(zhuǎn)換呢? 這個(gè)原因要說(shuō)長(zhǎng)就很長(zhǎng)的,但簡(jiǎn)單地講,這又是一個(gè)在人的直觀和機(jī)器的高效之間取一個(gè)平衡:
    ?????我們先來(lái)看一個(gè)10進(jìn)制的數(shù)運(yùn)算:
    ?????1 + (-1) = 0 //10進(jìn)制中,1加負(fù)1應(yīng)為0.
    ?????然后,假如用1000 0001來(lái)表示-1的話。按照計(jì)算機(jī)計(jì)算加法的規(guī)則,它是每位加的,結(jié)果是:
    ?????0000 0001 + 1000 0001 = 1000 0010??//-2
    ?????結(jié)果變成-2了,其中后面兩個(gè)0001 相加變成2,而前面的用于表示負(fù)號(hào)的1,被“繼承”下來(lái)了……顯然,原來(lái)計(jì)算機(jī)最直觀的(對(duì)人來(lái)說(shuō)也很直觀的)算法,不靈了!怎么辦?痛苦

    ??? 但更痛苦的事還在0這個(gè)數(shù)上。按10進(jìn)制,0和-0可是完全相等的。但如果用二進(jìn)制,0000 0000 和 1000 0000 參加起運(yùn)算,可是完全不同。或許可以通過(guò)電路設(shè)計(jì),來(lái)強(qiáng)制讓計(jì)算機(jī)去實(shí)現(xiàn)一個(gè)規(guī)則: 碰到1000 0000就先轉(zhuǎn)換為0000 0000。但可要知道加減法計(jì)算是計(jì)算機(jī)計(jì)算一切的基礎(chǔ),如果從這最底層就必須有一個(gè)轉(zhuǎn)換會(huì)極大影響性能!何況前面那個(gè)問(wèn)題也必須有個(gè)強(qiáng)制規(guī)則!規(guī)則最好越簡(jiǎn)單越好,那就是規(guī)定前面的補(bǔ)碼轉(zhuǎn)換規(guī)則,這個(gè)轉(zhuǎn)換過(guò)程對(duì)于計(jì)算機(jī)來(lái)說(shuō)很迅速的邏輯電路轉(zhuǎn)換。

    ??? 你看,第一個(gè)問(wèn)題 1 + (-1)
    ? ? 0000 0001 + 1111 1111 = 0000 0000?
    ????看明白這個(gè)計(jì)算過(guò)程嗎?其實(shí)就是最低位的兩個(gè)1相加后,造成每一位都進(jìn)位,最高位直接溢出(丟了)。如果你還算不清,就算算這個(gè)10進(jìn)制的:
    ????1 + 999 =??1000 (最高位1丟失,就成0了)
    ????然后是第二個(gè)問(wèn)題,0的表示。如果您把0當(dāng)成正數(shù),那么它是這樣表示的:
    ????0000 0000
    ????如果你當(dāng)它是負(fù)數(shù),那么
    ????取反 1111 1111 ,再加1,以求補(bǔ) ,哈哈又成 0000 0000這回在邏輯上沒(méi)有錯(cuò)誤了!明白了吧?當(dāng)補(bǔ)我在學(xué)習(xí)這一段知識(shí)時(shí),只能說(shuō):高,實(shí)在高! 想出補(bǔ)碼的前輩,真是高人啊。

    posted on 2006-09-20 20:59 Find it, try it, experience it 閱讀(242) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    If there is any question you have, please don't hesitate, let me know ASAP, you can find me at kenees@gmail.com or QQ: 9808873, hope to make friends with you ;)

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章檔案

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲国产成人久久综合| 亚洲国产综合专区在线电影| 亚洲成av人在线观看网站| 免费人成网站在线观看10分钟| 91亚洲精品视频| ww4545四虎永久免费地址| 亚洲国产精品成人精品软件| 无码人妻一区二区三区免费手机| 亚洲一区二区三区四区视频| 在线观看特色大片免费视频| 亚洲性色AV日韩在线观看 | 污污网站18禁在线永久免费观看| 亚洲av成人综合网| 国产人在线成免费视频| 亚洲综合成人婷婷五月网址| 免费观看在线禁片| 全黄性性激高免费视频| 亚洲国产成人久久| 日韩免费视频一区二区| 亚洲黄色网址在线观看| 免费影院未满十八勿进网站| 国产精品亚洲精品久久精品| www.999精品视频观看免费| 亚洲AV无码成人精品区狼人影院| 亚洲精品A在线观看| 久久福利青草精品资源站免费| 亚洲国产精品白丝在线观看| 国产成人免费全部网站| 97人妻精品全国免费视频| 亚洲在成人网在线看| 国产jizzjizz视频全部免费| 日韩电影免费在线观看网站| 亚洲精彩视频在线观看| 国产在线19禁免费观看| 丁香花在线视频观看免费| 国产精品亚洲片夜色在线| 免费永久在线观看黄网站| 日韩电影免费在线观看中文字幕 | 国产高清在线免费| 玖玖在线免费视频| mm1313亚洲国产精品无码试看|