今天下午上數(shù)字邏輯咆瘟,老師在講 數(shù)制
和 碼制
荸频,閑來(lái)無(wú)事蹂风,便開(kāi)始思考以前一直忽略的 關(guān)于進(jìn)制轉(zhuǎn)換的原理
,細(xì)細(xì)思考之后爱葵,發(fā)現(xiàn)了一些好玩的東東,記下來(lái)記下來(lái)~
首先是 十進(jìn)制整數(shù)部分轉(zhuǎn)換成其他的進(jìn)制
反浓,方法大家都懂的:
不斷除以基數(shù)取余數(shù)萌丈,直到商為零,從下到上讀取余數(shù)
以前一直搞不懂為什么是從下到上雷则,只知道書(shū)上怎么說(shuō)就怎么用~ 經(jīng)過(guò)思考了之后辆雾,我發(fā)現(xiàn)了原因是這樣的:
之所以要從下到上數(shù),是因?yàn)樵酵笤撐凰幍奈粰?quán)越高(因?yàn)楸怀烁啻瘟寺?sub>)月劈,所以度迂,該位是被除了多少次之后得到的就是該位的位權(quán)
這樣的解釋,應(yīng)該是對(duì)的吧~
然后是小數(shù)部分猜揪,方法是這樣的:
不斷乘以基數(shù)取整數(shù)惭墓,從上到下讀取整數(shù),直到滿足精度要求為止
這里有兩個(gè)問(wèn)題:為什么又變成了乘法和從上到下呢而姐?
原因是這樣的:
我們可以聯(lián)系一下二進(jìn)制轉(zhuǎn)小數(shù)部分十進(jìn)制的方法腊凶,是按照對(duì)應(yīng)位大小乘以位權(quán),而小數(shù)部分位權(quán)都是負(fù)數(shù)拴念,也就是相當(dāng)于除法钧萍,所以,作為逆運(yùn)算政鼠,就應(yīng)該是乘法风瘦。至于為什么是從上到下,我們看一下相應(yīng)位的位權(quán)的絕對(duì)值就可以知道了公般。
最后的一個(gè)問(wèn)題是關(guān)于補(bǔ)碼的弛秋。去年學(xué)C語(yǔ)言的時(shí)候,在學(xué)這一部分的時(shí)候總是納悶俐载,為什么要取反再加一蟹略? ,現(xiàn)在想想遏佣,沒(méi)錯(cuò)挖炬,這不是認(rèn)為刻意的規(guī)定,而是必然W瓷簟R饬病馅巷!理由:
我們知道弄一個(gè)補(bǔ)碼是為了解決數(shù)的正負(fù)。所以草姻,我們就可以從這一個(gè)方面來(lái)理解了钓猬。任何一個(gè)負(fù)數(shù),其實(shí)我們都可以看作是:** 0 減去該數(shù)的絕對(duì)值 撩独!** 又因?yàn)閿?shù)又分為奇數(shù)和偶數(shù)敞曹,我們分兩方面來(lái)看:
1. 奇數(shù)
在二進(jìn)制里面,奇數(shù)的最低位肯定是1综膀,所以被 0 減去之后最低位肯定是1澳迫,然后,又因?yàn)?0 比該數(shù)的絕對(duì)值小剧劝,所以存在借位的情況橄登,然后借位之后肯定是要還位的,所以被減數(shù) 0 就除了最低位之外都是 1 了讥此,降下來(lái)的各位拢锹,已經(jīng)很明顯了,如果是 0 : 1 - 0 = 1萄喳;如果是 1:1 - 1 = 0面褐。所以,奇數(shù)的補(bǔ)碼是結(jié)果是這樣的:最低位肯定是 1取胎,然后其余位都取反展哭。你再去對(duì)照我們求補(bǔ)碼的方法就會(huì)發(fā)現(xiàn)結(jié)果都是一樣的!
2. 偶數(shù)
有了上面奇數(shù)的例子闻蛀,其實(shí)偶數(shù)就很好理解了匪傍,因?yàn)榕紨?shù)就是在某一個(gè)奇數(shù)后面加上若干個(gè) 0 ,也就是說(shuō)觉痛,偶數(shù)的最低位肯定是 0 役衡。所以,我們就可以理解奇數(shù)的方法來(lái)理解:因?yàn)榕紨?shù)就是在某個(gè)奇數(shù)后面加上若干個(gè) 0 薪棒,所以手蝎,奇數(shù)提到的借位肯定不會(huì)發(fā)生在這些低位的 0 上(因?yàn)?0 - 0 = 0,根本就不用借位)俐芯,因此棵介,0 減去一個(gè)偶數(shù)的結(jié)果相當(dāng)于某一個(gè)奇數(shù)取補(bǔ)碼之后的結(jié)果再加上若干個(gè)0。那么吧史,這個(gè)又跟補(bǔ)碼的取法取反之后再加一有什么關(guān)系呢邮辽?我們來(lái)看:前面說(shuō)過(guò),偶數(shù)就是在某一個(gè)奇數(shù)后面加上若干個(gè) 0 ,所以它取反的結(jié)果我們分為兩部分:奇數(shù)部分和0的部分吨述。奇數(shù)部分取反肯定是 0 變 1 岩睁,1 變 0 。在這里我們只需要注意該奇數(shù)的最低位是 1揣云,所以取反后是 0 捕儒。然后是 0 的那一部分,取反肯定都變成了 1 邓夕。也就是說(shuō):上面取反的結(jié)果得到的是 奇數(shù)部分的最低位變成了 0刘莹,然后后面跟了若干個(gè) 1最后,再加 1 翎迁,結(jié)果是上一步的若干個(gè)連續(xù)的 1 都變成了 0 ,然后奇數(shù)部分的最低位又變成了 1 净薛,其余位沒(méi)有變化汪榔。那么這個(gè)時(shí)候你再對(duì)照一下我們上面用 0 減去該偶數(shù)的絕對(duì)值的做法,結(jié)果是一模一樣的K喟荨3针纭!
好了燃领,說(shuō)了這么多士聪,究竟說(shuō)明了什么呢?我覺(jué)得只說(shuō)明了:補(bǔ)碼是一種必然且自然的方法猛蔽,取反再加一只是一種幫助記憶的方法罷了~
突然發(fā)現(xiàn)懂了一個(gè)東西以及能夠?qū)⑺_地表達(dá)出來(lái)真的是兩碼事剥悟!感覺(jué)自己的表達(dá)能力還需要加強(qiáng)!B狻区岗!希望這篇東東能夠?qū)Υ蠹矣兴鶐椭鷡