www.wikidata.uk-ua.nina.az
Dopovnyalnij kod angl two s complement dopovnennya do 2 najposhirenishij sposib podannya vid yemnih chisel u komp yuterah Dozvolyaye zamist komandi vidnimannya vikoristovuvati komandu dodavannya dlya znakovih i bezznakovih chisel sho zmenshuye vimogi do arhitekturi komp yutera Dopovnyalnij kod vid yemnogo chisla mozhna otrimati tak invertuvati modul chisla u dvijkovomu viglyadi pershe dopovnennya i dodati odinicyu druge dopovnennya abo vidnyati chislo vid nulya Matematichno dopovnyalnij kod Xdop 2N 1 X de X chislo yake treba predstaviti u dopovnyalnomu kodi N k st rozryadiv chisla Najstarshij bit0 1 1 1 1 1 1 1 1270 1 1 1 1 1 1 0 1260 0 0 0 0 0 1 0 20 0 0 0 0 0 0 1 10 0 0 0 0 0 0 0 01 1 1 1 1 1 1 1 11 1 1 1 1 1 1 0 21 0 0 0 0 0 0 1 1271 0 0 0 0 0 0 0 128Vosmirozryadni dopovnyalni kodi Zmist 1 Podannya vid yemnogo chisla u dopovnyalnomu kodi 2 Dopovnyalnij kod dlya desyatkovih chisel 3 Peretvorennya u dopovnyalnij kod 4 R adichni chisla 5 Arifmetichni operaciyi 5 1 Dodavannya 6 Realizaciya algoritmu peretvorennya v dopovnyuvalnij kod dlya 8 bitnih chisel 6 1 Pascal 6 2 C C 7 Perevagi ta nedoliki 7 1 Perevagi 7 2 Nedoliki 8 Priklad programnogo peretvorennya 8 1 C NET C style 9 Div takozhPodannya vid yemnogo chisla u dopovnyalnomu kodi RedaguvatiPri zapisi chisla v dopovnyalnomu kodi starshij rozryad ye znakovim Yaksho jogo znachennya dorivnyuye 0 to v reshti rozryadiv zapisane dodatne dvijkove chislo sho zbigayetsya zpryamim kodom Dvijkove 8 rozryadne chislo zi znakom v dopovnyalnomu kodi mozhe predstavlyati bud yake cile v diapazoni vid 128 do 127 Yaksho starshij rozryad dorivnyuye nulyu to najbilshe cile chislo sho mozhe buti zapisane v ostannih 7 rozryadah dorivnyuye 2 7 1 displaystyle 2 7 1 nbsp sho dorivnyuye 127 Prikladi Desyatkovevidobrazhennya Dvijkove vidobrazhennya 8 bit pryamij obernenij dopovnyalnij127 01111111 01111111 01111111 1 00000001 00000001 00000001 0 00000000 00000000 00000000 0 10000000 11111111 1 10000001 11111110 11111111 2 10000010 11111101 11111110 3 10000011 11111100 11111101 4 10000100 11111011 11111100 5 10000101 11111010 11111011 6 10000110 11111001 11111010 7 10000111 11111000 11111001 8 10001000 11110111 11111000 9 10001001 11110110 11110111 10 10001010 11110101 11110110 11 10001011 11110100 11110101 127 11111111 10000000 10000001 128 10000000 Dopovnyalnij kod dlya desyatkovih chisel RedaguvatiCe same mozhna vikoristovuvati i v komp yuternomu podanni desyatkovi chisla dlya kozhnogo rozryadu cifra X zaminyuyetsya na 9 X i do oderzhanogo chisla dodayetsya 1 Napriklad pri vikoristanni chotiriznachnih chisel 0081 zaminyuyetsya na 9919 9919 0081 0000 p yatij rozryad vikidayetsya Pri zastosuvanni tiyeyi zh ideyi do zvichnoyi 10 kovoyi sistemi chislennya vijde napriklad dlya gipotetichnogo procesora sho vikoristovuye 10 tkovu sistemu chislennya 10 kova sistema chislennya prostij zapis 10 kova sistema chislennya dopovnyalnij kod 13 001312 001211 001110 00109 00098 0008 2 00021 00010 0000 1 9999 2 9998 3 9997 4 9996 9 9991 10 9990 11 9989 12 9988 Peretvorennya u dopovnyalnij kod RedaguvatiPeretvorennya chisla z pryamogo kodu v dopovnyalnij zdijsnyuyetsya za takim algoritmom Yaksho chislo zapisane v pryamomu kodi dodatne to do nogo dopisuyetsya starshij znakovij rozryad rivnij 0 i na comu peretvorennya zakinchuyetsya Yaksho chislo zapisane v pryamomu kodi vid yemne to vsi rozryadi chisla krim znakovogo invertuyutsya a do rezultatu dodayetsya 1 Do otrimanogo chisla dopisuyetsya starshij znakovij rozryad rivnij 1 Priklad Peretvorimo vid yemne chislo 5 zapisane v pryamomu kodi v dopovnyalnij Pryamij kod chisla 5 vzyatogo za modulem 101 Invertuyemo vsi rozryadi chisla otrimuyuchi takim chinom obernenij kod 010 Dodamo do rezultatu 1 011 Dopishemo zliva znakovij odinichnij rozryad 1011 Dlya zvorotnogo peretvorennya vikoristovuyetsya toj zhe algoritm A same 1011 Invertuyemo vsi rozryadi chisla otrimuyuchi takim chinom obernenij kod 0100 Dodamo do rezultatu 1 0101 I perevirimo dodavshi do dopovnyalnogo kodu 0101 1011 10000 p yatij rozryad vikidayetsya R adichni chisla RedaguvatiV sistemi p adichnih chisel zmina znaku chisla zdijsnyuyetsya peretvorennyam chisla v jogo dopovnyalnij kod Napriklad yaksho vikoristovuyetsya 5 kova sistema chislennya to chislo protilezhne 1000 1 tak samo ye 4444 1 Arifmetichni operaciyi RedaguvatiDodavannya Redaguvati Dodavannya dvoh chisel u dopovnyalnomu kodi ne potrebuye dodatkovih dij yaksho dodanki mayut protilezhni znaki u takomu vipadku znak sumi viznachayetsya avtomatichno Priklad dodavannya 15 ta 5 11111 111 perenesennya 0000 1111 15 1111 1011 5 0000 1010 10 Cej proces zalezhit vid obmezhennya vismoma bitami perenesennya do vidsutnogo dev yatogo najstarshogo bitu ignoruyetsya sho povertaye nam pravilnij rezultat 1010 Najstarshi dva biti ryadka perenesenih cifr mistyat vazhlivu informaciyu koli obchislennya prizvelo do arifmetichnogo perepovnennya chislo zanadto velike dlya podannya u dvijkovij sistemi u comu vipadku bilshe nizh 8 bit Perepovnennya isnuye todi koli ci dva biti vidriznyayutsya odin vid odnogo Yak uzhe zgaduvalosya znak koduyetsya v starshomu biti rezultatu Inshimi slovami koli obidva starshi biti ryadka perenesennya 1 abo 0 obchislennya dalo pravilnij rezultat ale koli voni utvoryuyut kombinaciyu 10 abo 01 trapilosya znakove perepovnennya Zruchno te sho operaciya XOR vikonana nad cimi dvoma bitami pokazuye chi bula operaciya vikonana korektno Yak priklad rozglyanemo 4 bitove dodavannya 7 ta 3 0111 perenesennya 0111 7 0011 3 1010 6 nekorektno Takim chinom dva najstarshih biti ryadka perenesennya utvoryuyut kombinaciyu 01 sho poznachaye arifmetichne perepovnennya Spravdi 10102 1010 sho znahoditsya za mezhami 4 bitovih chisel 8 ta 7 Zagalom bud yaki N bitovi chisla mozhut buti dodani bez perepovnennya yaksho pered cim yih perevesti do N 1 bitovogo viglyadu i pislya cogo dodati Mezhi N 1 bitovih chisel bilsh nizh vdvichi perevishuyut mezhi N bitovih chisel tozh u novij sistemi perepovnennya nikoli ne vinikne Realizaciya algoritmu peretvorennya v dopovnyuvalnij kod dlya 8 bitnih chisel RedaguvatiPascal Redaguvati if a lt 0 then a not a or 128 1 C C Redaguvati int convert int a if a lt 0 a a 128 1 return a Perevagi ta nedoliki RedaguvatiPerevagi Redaguvati Komirka pam yati mozhe mistiti yak n bitni dodatni chisla tak i n 1 bitni chisla zi znakom prichomu operaciyi dodavannya vidnimannya i zsuvu vlivo odnakovi dlya oboh formativ Vidsutnist chisla 0 U obernenomu kodi take chislo ye Nedoliki Redaguvati Stosovno skladnih formativ takih yak ruhoma koma abo dvijkovo desyatkovij kod perevagi vtrachayutsya Modul najbilshogo chisla ne dorivnyuye modulyu najmenshogo Napriklad dlya znakovoyi ciloyi 8 bitovoyi zminnoyi najbilshe chislo ce 12710 7F16 011111112 a najmenshe 12810 8016 dop kod 100000002 dop kod Vidpovidno ne dlya kozhnogo chisla mozhna zapisati protilezhne Operaciya zmini znaku mozhe vimagati dodatkovoyi perevirki Priklad programnogo peretvorennya RedaguvatiYaksho vidbuvayetsya chitannya danih z fajla abo dilyanki pam yati de voni zberigayutsya v dvijkovomu dopovnyalnomu kodi napriklad fajl WAVE mozhe viyavitisya neobhidnim obernuti bajti Yaksho dani zberigayutsya v 8 bitah neobhidno shob znachennya 128 255 buli vid yemnimi C NET C style Redaguvati byte b1 254 11111110 dvijkove byte b2 121 01111001 dvijkove byte c 1 lt lt sizeof byte 8 1 2 pidnositsya do 7 stepenya Rezultat 10000000 dvijkove byte b1Conversion c b1 c Rezultat 2 A ce faktichno dvijkovij dopovnyuvalnij kod byte b2Conversion c b2 c Rezultat zalishayetsya 121 tomu sho znakovij rozryad nul Div takozh RedaguvatiPryamij kod Obernenij kod Cilochiselnij tip Algoritm Buta nbsp Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno listopad 2011 Otrimano z https uk wikipedia org w index php title Dopovnyalnij kod amp oldid 39270089