Results 1 to 9 of 9

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date: Aug:2007
    Location: Âàðíà
    Posts: 1,335

    Question Çíàåòå ëè êàê äà çàìåñòÿ 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.

  2. #2
    ɐ-əpoɔᴉu⋂ ɐí íəÔ anrieff's Avatar
    Join Date: Apr:2004
    Location: Sofia
    Posts: 8,448
    Ñúâðåìåííîòî C++ (à ìèñëÿ è C) èìà íåùî, êîåòî ñå íàðè÷à strict aliasing rules. Òîâà îçíà÷àâà, ÷å:

    1. Àêî èìàø åäèí float äà ðå÷åì
    2. Âçåìåø óêàçàòåë êúì ÷åòèðèòå ìó áàéòà è ñìåíèø âòîðèÿ äà ðå÷åì
    3. Ñå îïèòàø äà ïîëçâàø ñúùèÿ float îòíîâî â ñìåòêè

    Òî ñòàíäàðòà ïîçâîëÿâà íà êîìïèëàòîðà äà "å â íåâåäåíèå", ÷å ñè ìó ñìåíèë áèòîâåòå èçïîä íîñà ìó è äà ïîëçâà ñòàðî êîïèå íà float-à âñå åäíî íèùî íå ñå å ñëó÷èëî. Äà íå ñå ðàçïðîñòèðàì çàùî ñòàíäàðòúò å íàïèñàí òàêà - ñìèñëåíî å, êîìïèëàòîðúò òàêà ìîæå äà ïðàâè ïîâå÷å îïòèìèçàöèè.

    Êîåòî çíà÷è, ÷å äèðåêòåí åêâèâàëåíò íà PEEK/POKE íÿìà, äàæå å èçðè÷íî çàáðàíåí.

    Êîå å ðàçðåøåíî: union-èòå.  òÿõ êîìïèëàòîðúò âèæäà êàêâè ïðîìåíëèâè äåëÿò åäíà è ñúùà ïàìåò è çíàå êàêâî äà î÷àêâà. Äåìåê ñëåäíèÿò êîä ùå òè ñâúðøè ðàáîòà:

    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]));
    Åñòåñòâåíî ìîæåø äà ïðàâèø è çàìåñòâàíèÿ (fp.c[1] = 0x23) ñ êîåòî òîâà òè âúðøè ðàáîòà è çà POKE.

    Óñïåõ!
    Åòî òàêà ñå ïëîäÿò òå, êàçâàì ñè àç. Ïîä íîñà òè.
    "640K îught to be enough for anybody" - Bill Gates, 1981
    Òåñòîâå íà áàòåðèè::Machine specs::Fract::AGG::ÍåÑåÑúðäè×îâå÷å::Baileys::blog::YouTube channel

  3. #3
    Registered User 4004's Avatar
    Join Date: Apr:2011
    Location: BG
    Posts: 2,061
    Êàêâî òå âëå÷å êúì dos.h? Àêî ÷åòåø ñòàðè êíèãè, íå å íóæíî äà ðàçó÷àâàø âñÿêà ïîäðîáíîñò. Èìà òîëêîâà íåùà, êîèòî âå÷å íå ñà àêòóàëíè, ÷å àêî òðúãíåø äà ãè ó÷èø âñè÷êè íÿìà äà òè ñòèãíàò è 10 ãîäèíè.À ïðåç òîâà âðåìå ùå ñà ñå ïîÿâèëè 20 ïúòè ïî òîëêîâà.

    À çà float è double èìà äîñòàòú÷íî èíôîðìàöèÿ äî ïîñëåäíèÿ áèò êîå êàêâî å. Èëè èñêàø íÿêîé äà òè ãî îáÿñíè âúâ ôîðóì è äà òè äàäå ëèíê, çà äà íå òúðñèø? Ñ òàêúâ ïîäõîä íÿìà äà ñòèãíåø äî íèêúäå ñ ïðîãðàìèðàíåòî.
    Last edited by 4004; 18th June 2020 at 11:04.

  4. #4
    Registered User
    Join Date: Dec:2007
    Location: Íèêúäå
    Posts: 655
    Quote Originally Posted by anrieff View Post
    Ñúâðåìåííîòî C++ (à ìèñëÿ è C) èìà íåùî, êîåòî ñå íàðè÷à strict aliasing rules.
    Â C ñúùî èìà strict aliasing, íî èìà åäèí äåòàéë, êîéòî ïðîìåíÿ íåùàòà ñúùåñòâåíî - èçðàç ñúñ çíàêîâ òèï (ïðèìåðíî "char") ìîæå äà ìàíèïóëèðà îáåêò îò ïðîèçâîëåí òèï, ñúîòâåòíî ïðèìåðúò, êîéòî ñè äàë, íå âàæè çà C. Çà ñìåòêà íà òîâà èìà "restrict", çà äà ñå ðàçâúðæàò ðúöåòå íà îïòèìèçàòîðà.

  5. #5
    Registered User RFK's Avatar
    Join Date: Jul:2011
    Location: BG
    Posts: 1,629
    Ãîâîðèòå çà óïðàâëåíèå íà ñàìîëåòè íà ÷îâåê, êîéòî ñå ó÷è äà êàðà âåëîñèïåä. Íÿìà ñìèñúë.

  6. #6
    Banned
    Join Date: Apr:2018
    Location: .
    Posts: 2,742
    Quote Originally Posted by PET3 View Post
    Íå áèõ èñêàë äà ñå ñúãëàñÿ ñ ìîÿ ëåêòîð îò êóðñà, ñïîðåä êîéòî âñÿêà öèôðà å áàéò. Òîâà áè îçíà÷àâàëî, ÷å èìàìå ASCII àðèòìåòèêà, âìåñòî ïîëóáàéòîâà BCD àðèòìåòèêà.
    ß êàæè îò êîÿ øêîëà å òîÿ ëåêòîð äåòî ãè êàçâà òèÿ ãëóïîñòè? Äà íå å åäíà àêàäåìèéêà ñúñ ñìåøíè ïðåòåíöèè äà ñå íàðè÷à óíèâåðñèòåò è ìàðêåòèíã òèï "íà áèòàêà"?

  7. #7
    Registered User 4004's Avatar
    Join Date: Apr:2011
    Location: BG
    Posts: 2,061
    Êàçàõ ìó â äðóãàòà òåìà, ÷å å íà åäèí àêúë ñ Àõìåä Ìåð÷åâ - òîé íå âÿðâà. Ìàé ñ âúïðîñíèÿ ëåêòîð ñà ñå ñúáðàëè â ñàìîçâàíà ôèëîñîôñêà øêîëà, êðúæîê çà ïèøìàí ïðîãðàìèñòè. Ïîêàíåòå ãóðóòî Ìåð÷åâ äà âè îáÿñíè òîâà îíîâà ïî âúïðîñà ñ ìèñëîâíèòå ìîäåëè, ASCII, BCD, EBCDIC è äð.
    Last edited by 4004; 18th June 2020 at 13:32.

  8. #8
    Registered User
    Join Date: Aug:2007
    Location: Âàðíà
    Posts: 1,335
    Áëàãîäàðÿ ìíîãî íà anrieff.

  9. #9
    Registered User 4004's Avatar
    Join Date: Apr:2011
    Location: BG
    Posts: 2,061
    Çà êàêâî ìó áëàãîäàðèø - ÷å ñå å ïðîáâàë äà òè îòãîâîðè áåç äà òå èðîíèçèðà ëè? Ïðîáëåìúò å, ÷å íèùî íå òè å îòãîâîðèë, à ñå å âêëþ÷èë âúâ ôèëîñîôñòâàíåòî òè.

    Quote Originally Posted by anrieff View Post
    Òî ñòàíäàðòà ïîçâîëÿâà íà êîìïèëàòîðà äà "å â íåâåäåíèå", ÷å ñè ìó ñìåíèë áèòîâåòå èçïîä íîñà ìó è äà ïîëçâà ñòàðî êîïèå íà float-à âñå åäíî íèùî íå ñå å ñëó÷èëî. Äà íå ñå ðàçïðîñòèðàì çàùî ñòàíäàðòúò å íàïèñàí òàêà - ñìèñëåíî å, êîìïèëàòîðúò òàêà ìîæå äà ïðàâè ïîâå÷å îïòèìèçàöèè.
    Êàêâè ñòàíäàðòè, êàêâè íåâåäåíèÿ. Íå å "ñòàíäàðòà ïîçâîëÿâà", à åçèêúò ãî ïîçâîëÿâà. È ïîëçâàíåòî íà ñòàðî êîïèå ìîæå äà ñå èçáåãíå ñ åäíî volatile. Îòäåëåí âúïðîñ å, ÷å ïîäîáíè îïèòèìèçàöèè ñå ñëó÷âàò íàé-÷åñòî ñ öåëî÷èñëåíè ïðîìåíëèâè, à íå double. Îùå ïîâå÷å ùî çà ñòðàííà ïðèóìèöà áè áèëî äà ïðåïðàâÿø îòäåëåí áàéò îò float/double ïðîìåíëèâà - íÿêàêúâ ñóïåð ÷àñòåí ñëó÷àé èëè ãëóïàâ òðèê. Îáùî âçåòî åäèíèÿò íå çíàå êàêâî òî÷íî ïèòà, â ãëàâàòà ìó å ïúëíî ñ ìúãëà, à äðóãèÿò ãàäàå êàêâî èìà çàä ìúãëàòà è ïèøå äúëúã îòãîâîð.
    Last edited by 4004; 19th June 2020 at 12:22.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Copyright © 1999-2011 Õàðäóåð ÁÃ. Âúçìîæíî å ñúäúðæàíèåòî íà òàçè ñòðàíèöà äà å îáåêò íà àâòîðñêè ïðàâà.
iskamPC.com | mobility.BG | Bloody's Techblog | Êðèïòîâàëóòè è ìàéíèíã | 3D Vision Blog | Ìàãàçèí çà åëåêòðîííè öèãàðè