本節書摘來華章計算機《計算機科學導論》一書中的第2章 ,第2.3節,[美]貝赫魯茲a. 佛羅贊(behrouz a. forouzan)著 劉藝劉哲雨等譯, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
盡管非位置化數字系統并不用在計算機中,但我們給出簡單的介紹作為和位置化數字系統的比較。非位置化數字系統仍然使用有限的數字元号,每個符号有一個值。但是符号所占用的位置通常與其值無關—每個符号的值是固定的。為求出該數字的值,我們把所有符号表示的值相加。該系統數字表示為:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLwAzN3YWN1ETZzEjN5YmY5MGO2kTNjhjY3gTN0IjZ0MzY0ITZzMzM18CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
并有值為:
與前面提到的相加規則有一些例外,如例2.24所示。
例2.24 羅馬數字系統是非位置化數字系統的一個好例子。該系統由羅馬人發明,并在歐洲一直使用到16世紀。它仍在體育比賽、鐘表刻度和其他應用中使用。該數字系統有一套符号s={i,v,x,l,c,d,m},每個符号的取值如表2-3所示。
為求一個數的值,我們需要遵循特定的法則将符号的值相加:
1)當一個帶有較小值的符号位于一個帶有同等值或較大值的符号的後面,這些值相加。
2)當一個帶有較小值的符号位于一個帶有較大值的符号的前面,用大值減小值。
3)如果s1≤10×s2,則符号s1不能出現在符号s2之前。例如,i和v不能出現在c前面。
4)對于大數字,在6種符号(除i以外的所有符号)中的任意一個上方加橫杠表示乘以1000。例如,v=5000和 m=1 000 000。
5)盡管羅馬人使用單詞nulla (空)來表達零的概念,但羅馬數字在其系統中缺少數位0。
下面顯示了一些羅馬數字和它們的值: