Results 1 to 9 of 9
Hybrid View
-
18th June 2020 08:01 #1Registered User
Join Date: Aug:2007
Location: Âàðíà
Posts: 1,335
Çíàåòå ëè êàê äà çàìåñòÿ PEEK è POKE â C/C++?
Çíàåòå ëè ñ êàêâî ìîãà äà çàìåñòÿ ëèïñàòà íà äâîéêàòà êîìàíäè {PEEK è POKE} îò áèáëèîòåêàòà #include <dos.h> íà åäíî ñúâðåìåííî Ñ?
Âúïðîñúò âàæè è çà Ñ++.
Íà ïðàêòèêà çà åäíî ÀËÓ ðàçëèêàòà èäâà ñàìî îò ðàçäàäêàòà â íà÷àëîòî è îò äåñåòè÷íàòà êîðåêöèÿ.
Ìíîãî ìè ñå èñêàøå äà íàäçúðíà çàä êóëèñèòå íà float è double ÷èñëàòà.
Êàêâà å ïîäðåäáàòà èì.
Äà ãè ðàçãëåäàì áàéò ïî áàéò.
Íå áèõ èñêàë äà ñå ñúãëàñÿ ñ ìîÿ ëåêòîð îò êóðñà, ñïîðåä êîéòî âñÿêà öèôðà å áàéò. Òîâà áè îçíà÷àâàëî, ÷å èìàìå ASCII àðèòìåòèêà, âìåñòî ïîëóáàéòîâà BCD àðèòìåòèêà.
Íàìåðèõ íåùî îòíîñíî:
Difference between Decimal, Float and Double
======================================== ====
Single -> 4B -> Float - 32 bit (7 digits)
Double -> 8B -> Double - 64 bit (15-16 digits)
Quadruple -> 16B -> Decimal - 128 bit (28-29 significant digits)
Íî, òîâà å ñóõà òåîðèÿ. Äðóãî ñè å äà ãî âèäèø ïðàêòè÷åñêè.
Íå ìîãà äà íàìåðÿ èíôîðìàöèÿ çà çàìåñòâàíå íà {PEEK/POKE} íèòî ïî êíèãè, íèòî â ãóãúë, íèòî ïî êóðñîâå.
Ïîìàãàéòå!
Áëàãîäàðÿ.
-------------------------
Àêî íÿìàòå îòãîâîð íà âúïðîñà, íå ñïàìåòå èçëèøíî.
Ñïåñòåòå ñè íåðâèòå!
Âñå ïàê ôîðóìúò èìà è äðóãè ó÷àñòíèöè, ÷èèòî òåìè èñêàò äà âèäÿò áÿë ñâÿò.Last edited by PET3; 18th June 2020 at 08:28.
-
18th June 2020 09:02 #2
Ñúâðåìåííîòî C++ (à ìèñëÿ è C) èìà íåùî, êîåòî ñå íàðè÷à strict aliasing rules. Òîâà îçíà÷àâà, ÷å:
1. Àêî èìàø åäèí float äà ðå÷åì
2. Âçåìåø óêàçàòåë êúì ÷åòèðèòå ìó áàéòà è ñìåíèø âòîðèÿ äà ðå÷åì
3. Ñå îïèòàø äà ïîëçâàø ñúùèÿ float îòíîâî â ñìåòêè
Òî ñòàíäàðòà ïîçâîëÿâà íà êîìïèëàòîðà äà "å â íåâåäåíèå", ÷å ñè ìó ñìåíèë áèòîâåòå èçïîä íîñà ìó è äà ïîëçâà ñòàðî êîïèå íà float-à âñå åäíî íèùî íå ñå å ñëó÷èëî. Äà íå ñå ðàçïðîñòèðàì çàùî ñòàíäàðòúò å íàïèñàí òàêà - ñìèñëåíî å, êîìïèëàòîðúò òàêà ìîæå äà ïðàâè ïîâå÷å îïòèìèçàöèè.
Êîåòî çíà÷è, ÷å äèðåêòåí åêâèâàëåíò íà PEEK/POKE íÿìà, äàæå å èçðè÷íî çàáðàíåí.
Êîå å ðàçðåøåíî: union-èòå.  òÿõ êîìïèëàòîðúò âèæäà êàêâè ïðîìåíëèâè äåëÿò åäíà è ñúùà ïàìåò è çíàå êàêâî äà î÷àêâà. Äåìåê ñëåäíèÿò êîä ùå òè ñâúðøè ðàáîòà:
Åñòåñòâåíî ìîæåø äà ïðàâèø è çàìåñòâàíèÿ (fp.c[1] = 0x23) ñ êîåòî òîâà òè âúðøè ðàáîòà è çà POKE.Code:union FloatPeek { float x; char c[4]; }; FloatPeek fp; fp.x = M_PI; printf("Second byte of %f is %u\n", fp.x, unsigned(fp.c[1]));
Óñïåõ!Åòî òàêà ñå ïëîäÿò òå, êàçâàì ñè àç. Ïîä íîñà òè.
"640K îught to be enough for anybody" - Bill Gates, 1981
Òåñòîâå íà áàòåðèè::Machine specs::Fract::AGG::ÍåÑåÑúðäè×îâå÷å::Baileys::blog::YouTube channel
-
18th June 2020 11:01 #3
Êàêâî òå âëå÷å êúì dos.h? Àêî ÷åòåø ñòàðè êíèãè, íå å íóæíî äà ðàçó÷àâàø âñÿêà ïîäðîáíîñò. Èìà òîëêîâà íåùà, êîèòî âå÷å íå ñà àêòóàëíè, ÷å àêî òðúãíåø äà ãè ó÷èø âñè÷êè íÿìà äà òè ñòèãíàò è 10 ãîäèíè.À ïðåç òîâà âðåìå ùå ñà ñå ïîÿâèëè 20 ïúòè ïî òîëêîâà.
À çà float è double èìà äîñòàòú÷íî èíôîðìàöèÿ äî ïîñëåäíèÿ áèò êîå êàêâî å. Èëè èñêàø íÿêîé äà òè ãî îáÿñíè âúâ ôîðóì è äà òè äàäå ëèíê, çà äà íå òúðñèø? Ñ òàêúâ ïîäõîä íÿìà äà ñòèãíåø äî íèêúäå ñ ïðîãðàìèðàíåòî.Last edited by 4004; 18th June 2020 at 11:04.
-
19th June 2020 20:58 #4Registered User
Join Date: Dec:2007
Location: Íèêúäå
Posts: 655
 C ñúùî èìà strict aliasing, íî èìà åäèí äåòàéë, êîéòî ïðîìåíÿ íåùàòà ñúùåñòâåíî - èçðàç ñúñ çíàêîâ òèï (ïðèìåðíî "char") ìîæå äà ìàíèïóëèðà îáåêò îò ïðîèçâîëåí òèï, ñúîòâåòíî ïðèìåðúò, êîéòî ñè äàë, íå âàæè çà C. Çà ñìåòêà íà òîâà èìà "restrict", çà äà ñå ðàçâúðæàò ðúöåòå íà îïòèìèçàòîðà.
-
19th June 2020 23:39 #5
Ãîâîðèòå çà óïðàâëåíèå íà ñàìîëåòè íà ÷îâåê, êîéòî ñå ó÷è äà êàðà âåëîñèïåä. Íÿìà ñìèñúë.
-
18th June 2020 12:35 #6Banned
Join Date: Apr:2018
Location: .
Posts: 2,742
-
18th June 2020 13:29 #7
Êàçàõ ìó â äðóãàòà òåìà, ÷å å íà åäèí àêúë ñ Àõìåä Ìåð÷åâ - òîé íå âÿðâà. Ìàé ñ âúïðîñíèÿ ëåêòîð ñà ñå ñúáðàëè â ñàìîçâàíà ôèëîñîôñêà øêîëà, êðúæîê çà ïèøìàí ïðîãðàìèñòè. Ïîêàíåòå ãóðóòî Ìåð÷åâ äà âè îáÿñíè òîâà îíîâà ïî âúïðîñà ñ ìèñëîâíèòå ìîäåëè, ASCII, BCD, EBCDIC è äð.
Last edited by 4004; 18th June 2020 at 13:32.
-
19th June 2020 08:13 #8Registered User
Join Date: Aug:2007
Location: Âàðíà
Posts: 1,335
Áëàãîäàðÿ ìíîãî íà anrieff.
-
19th June 2020 11:15 #9
Çà êàêâî ìó áëàãîäàðèø - ÷å ñå å ïðîáâàë äà òè îòãîâîðè áåç äà òå èðîíèçèðà ëè? Ïðîáëåìúò å, ÷å íèùî íå òè å îòãîâîðèë, à ñå å âêëþ÷èë âúâ ôèëîñîôñòâàíåòî òè.
Êàêâè ñòàíäàðòè, êàêâè íåâåäåíèÿ. Íå å "ñòàíäàðòà ïîçâîëÿâà", à åçèêúò ãî ïîçâîëÿâà. È ïîëçâàíåòî íà ñòàðî êîïèå ìîæå äà ñå èçáåãíå ñ åäíî volatile. Îòäåëåí âúïðîñ å, ÷å ïîäîáíè îïèòèìèçàöèè ñå ñëó÷âàò íàé-÷åñòî ñ öåëî÷èñëåíè ïðîìåíëèâè, à íå double. Îùå ïîâå÷å ùî çà ñòðàííà ïðèóìèöà áè áèëî äà ïðåïðàâÿø îòäåëåí áàéò îò float/double ïðîìåíëèâà - íÿêàêúâ ñóïåð ÷àñòåí ñëó÷àé èëè ãëóïàâ òðèê. Îáùî âçåòî åäèíèÿò íå çíàå êàêâî òî÷íî ïèòà, â ãëàâàòà ìó å ïúëíî ñ ìúãëà, à äðóãèÿò ãàäàå êàêâî èìà çàä ìúãëàòà è ïèøå äúëúã îòãîâîð.Last edited by 4004; 19th June 2020 at 12:22.




Reply With Quote

Lenovo ThinkPad 15 èëè IdeaPad 15
5th May 2023, 22:16 in Ìîáèëíè êîìïþòðè