[轉]關於Megatops BinCalc RPN計算器的說明

最近收到幾個好心人發來的郵件,指出個人BinCalc存在低級BUG,即1+1算出來不等於2~~鑑於存在這種誤解的人之多,俺不得不爬出來澄清一下~~個人Megatops BinCalc當中的計算器是RPN Calculator!(同窗們難道沒有發現BinCalc的計算器沒有等號嘛~~囧rz)程序員

若是你是學軟件出身的可是竟然沒有據說過RPN,那你必定是沒聽課也沒作做業的了~~逆波蘭表達式的概念最先出如今C聖經的課後習題裏面。不過若是你學的是歎號強那本誤人子弟的爛書……那也最遲會在編譯原理裏面看到它。若是你是學硬件出身的~~俺也不是很清楚硬件課程有沒有提到RPN的,可是感受應該沒道理不提。spa

BinCalc的RPN計算器基本上是和惠普計算器的RPN操做相同的,是XYTZ 4寄存器的經典RPN(惠普的計算器有的型號多一個LASTx寄存器,可是換湯不換藥)。和惠普的計算器相比,BinCalc的RPN計算器費了大力氣硬是擠下了一個可視化的堆棧,用起來應該是比只有一行顯示的那種HP計算器好用多了。RPN的原理極其簡單,簡述以下:blog

BinCalc的RPN計算器有XYZT四個寄存器。在界面的多進制面板中顯示和輸入的都是X寄存器的內容;YZT三個寄存器能夠當作是個堆棧,其中T是棧頂寄存器(能夠做爲常數寄存器來使用)。rem

按ENTER鍵是執行壓棧操做~~不是看成等號用的啦(╯﹏╰),因此你1+1 ENTER~~結果固然不會是2~~get

關於Megatops BinCalc RPN計算器的說明 - 豬哥 - 豬哥的博客

如上圖,按了ENTER之後,X寄存器的內容會被壓入堆棧(YZT),原來T寄存器的內容由於堆棧上溢而被擠出去丟掉了。每一個寄存器都有一套本身的單目運算按鈕,能夠在不須要調整到X的前提下對每一個寄存器直接進行算術移位和取反等操做(BinCalc無敵可視化堆棧的威力)。最右邊三個按鈕是用於調整堆棧的,從上到下分別是:寄存器循環上移(至關於HP的R↑鍵)、寄存器循環下移(HP的R↓鍵)、XY寄存器互換(HP的X<>Y鍵)。另外CLx是X寄存器清零,CLR是清空全部寄存器(HP的CLΣ鍵)。這幾個都好理解,本身試試就明白。博客

作二元計算的時候,狀況是這樣的(好比作+計算):編譯

關於Megatops BinCalc RPN計算器的說明 - 豬哥 - 豬哥的博客

整個計算的過程你能夠看做是:按下雙目算符後,就會從堆棧中彈出操做數Y,與X寄存器一塊進行相應的計算,計算的結果放在X寄存器內。在退棧的時候能夠看到T寄存器始終是保持不變的,因此實際使用的時候T寄存器能夠看成常數寄存器來用。好比有時候常常要算XXX和幾個1024相乘或者相除的結果。這時候就能夠把1024一直壓到T寄存器去,而後就能源源不斷地從堆棧中彈出1024這個數進行計算了。編譯原理

RPN的雙目計算乍一看彷佛很深奧的樣子,實際上徹底能夠看做是豎式計算:可視化

關於Megatops BinCalc RPN計算器的說明 - 豬哥 - 豬哥的博客

豎式計算好像小學1年級開始就玩得很熟了~~應該不用再廢話。原理

另外,BinCalc在以下高亮位置有右鍵菜單,其餘就再沒有什麼Readme沒有提到的隱藏的機關了~~

關於Megatops BinCalc RPN計算器的說明 - 豬哥 - 豬哥的博客

最後~~貼一個史上最經典的程序員專用計算器:HP-16C。惋惜HP的11/12/15/16這一系列計算器最終僅有12C活的滋潤一直生產到如今(如今還能買到,基本成爲金融計算器的工業標準了)。15和16都停產很久了~~如今被看成古董賣價格有點誇張了。

關於Megatops BinCalc RPN計算器的說明 - 豬哥 - 豬哥的博客

 

相關文章
相關標籤/搜索