|
Article on other languages:
|
Por fari komputadon kun uzo de nenegativaj nombroj en komputiloj necesas iel ilin priskribi kaj konservi en registriloj kaj memoro. En komputiloj ĝenerale estadas uzataj signaj variabloj (kiuj povas teni negativajn kaj nenegativaj nombojn) kaj sensignaj (kiuj povas teni nur nenegativaj nombojn). Variabloj kun flosanta punkto (proksimumigo de reelaj nombroj en komputiloj) ĉiam estas signaj. Entjeraj variabloj estadas kaj signaj kaj sensignaj. Inter multaj eblaj manieroj de priskribo de signo du variantoj estas kutime (nun) uzataj. Priskribo kun aparta bito por signoLa unua varinto estas per uzo de aparta bito por signo, kaj la restas bitoj priskribas la modulon de la nombro. Unu el ĉefaj malavantaĝoj de ĉi tiu maniero estas tiu ke nulo povas esti skribata per du diversaj manieroj - +0 kaj -0. Tiam operacio de komparo devas konsideri ĉi tiun okazon kaj redoni rezulton de egaleco se unu el la argumentoj estas +0 kaj la alia -0. Sekve, se memoro de komputilo estas uzata por konservi ion alian, ne neombroj sed ekzemple tekston, ĉi tia operacio de komparo jam ne povas esti uzata, ĉar en maloftaj sed realigeblaj okazoj ĝi ricevos ke du teksteroj estas la samaj, kvankam ili estas diversaj, se unu el teksteroj aspektas kiel +0 kaj la alia aspektas kiel -0. Nun ĉi tia priskribo kutime estadas uzata por nombroj kun flosanta punkto . Priskribo per aldona kodoLa alia varinto estas per uzo tiel nomata aldona kodo. La ideo estas en tio, ke se subtrahi unuon el nulo, la rezulto estos -1, kaj ĉi tion eblas per jam ekzistanta por sensignaj nombroj operacio de subtraho. Do prezento de -1 estas la maksimuma nombro, prezentebla per sensigna nombro kun la sama kvanto de bitoj. Se estas k bitoj en nombro la prezentataj nombroj aspektas tiel:
Ĉi tiu prezento kutime estas uzata por entjeraj variabloj. Komputado de aritmetika neo en ĉi tiu okazo estas per la logika neo kaj posta adicio de 1:
En ĉi tiu maniero estas priskribeblaj nombroj -2k-1 ... 2k-1-1. En negativo direkto estas je unu nomro pli multe. Se komputi, laŭ donita maniero, aritmetikan neon de ĉi tiu aldona negativa nombro -2k-1, la rezulto estos ĉi tiu nombro mem, do la komputado de aritmetiko neo masukcesos. Signon de nomro ĉiam eblas ekscii laŭ la plej valora bito: se ĝi estas 0 la nombro estas nenegativa, se 1 - negativa. Operacioj de adicio, subtraho kaj bita ŝovo maldekstren estas en ĉi tiu prezento la samaj kiel por sensignaj nombroj. Operacioj de multipliko, divido, komparo kaj bita ŝovo dekstren estas en ĉi tiu prezento malsamaj ol por sensignaj nombroj. En okazo de komparo temas nur pri alispeca komprenado de la rezultoj, la komparo mem estas fakte subtraho kaj estas farata la same. Uzo en programlingvojPlejparto de programlingvoj ne donas eblecon libere elekti ĉu la variablo estu signa aŭ sensigna. Pri literaj variabloj (por enteni unu literon) la signeco estadas diversa, sed pli ofte ili estas sensignaj. La pli longaj (kun pli granda kvanto de bitoj) variabloj kutime estadas nur signaj. Inter nemultaj programlingvoj kiuj donas eblecon specifi signecon de entjeraj variabloj estas C kaj C++. En la lingvoj signa entjera variablo x estas difinata kiel (por diversa kvanto da bitoj):
kaj sensigna entjera variablo x estas difinata kiel:
Ĉi tie defaŭlta signeco de litera variablo (char) povas estas diversa, por ricevi certan rezulton necesas skribi la deziratan signecon per vortoj "signed" kaj "unsigned". La aliaj variabloj defaŭlte estas signaj, por fari ilin sensignajn vorto "unsigned" estas uzata. |
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net