Kezdőlap › Fórumok › Programozás › C programozás 2
- This topic has 75 hozzászólás, 10 résztvevő, and was last updated 19 years, 11 months telt el by
kisbetu.
-
SzerzőBejegyzés
-
2005-06-12-16:51 #2017257
Minden tiszteletem a tiétek, kisbetu, de a ‘bites vagy (|) ‘ használatával a kód mindig igazat ad, így használhatatlan az én olvasatomban. Vagy valamit tényleg félre nézek. :rolleyes:
[align=right][snapback]138188[/snapback][/align]Nézd, én gyûlölöm a C-t, assemblyben viszont elég jól elnavigálok.
00011111 VAGY 00000100 = 00011111
00011011 VAGY 00000100 = 00000000
ezzel megnéztem, hogy a 3. bit nulla-e00011111
2005-06-12-18:59 #2017258Ez tényleg igaz:
00011111 VAGY 00000100 = 00011111
Ez nem igaz assemblyben sem:
00011011 VAGY 00000100 = 00000000
ezzel megnéztem, hogy a 3. bit nulla-eEz igaz, én is ezért írtam
2005-06-12-19:05 #2017259Köszi a hozzászólásokat.
Kicsit belebonyolódtam a kizáró vagyba. A lónak is 4 lába van…
Azt hiszem már írtam, nyugodtan javítsd ki kisbetu…
(Ja, talán szerencsésebb lett volna a bittenkénti logikai vagy kifejezés.)„
2005-06-13-07:02 #2017260Kicsit belebonyolódtam a kizáró vagyba. A lónak is 4 lába van…
2005-06-13-07:45 #2017261Ja, ja igazad van az az és, amit kellene használni… (nekem meg a fejem, nemcsak evésre)
(Nem jött be ez a tegnapi nap :))„hát ez itt nem is programozói verseny.”
Nem, nem. Az a lényeg, hogy végül kiderüljön az igazság :))))2005-06-13-14:47 #2017262Na szóval, amit írni akartam:
„Bocs de azt nem értem. A másik gép lehet pl egy windowsos gép vagy a SPARC is, ezért kéne a kikötés.”
– Az, hogy egy bizonyos változó típus mekkora helyet kap az a fordító specialitása, nem a oprendszeré. Pl. egy asm/gépikódú byte, mindig 8 bit, egy szó mindig 16 bit stb. lesz.[align=right][snapback]138091[/snapback][/align]
az,hogy egy int típus hány bájtos az a cputól,fordítótól,oprendszertõl függ!!
„The size of a signed or unsigned int item is the standard size of an integer on a particular machine. For example, in 16-bit operating systems, the int type is usually 16 bits, or 2 bytes. In 32-bit operating systems, the int type is usually 32 bits, or 4 bytes. Thus, the int type is equivalent to either the short int or the long int type, and the unsigned int type is equivalent to either the unsigned short or the unsigned long type, depending on the target environment. The int types all represent signed values unless specified otherwise.
„az, hogy a memóriában, hogy néz ki egy több bájtos valami az meg aztán pláne nem egyértelmû 🙂 (little-endian, big-endian)
2005-06-13-17:52 #2017263Vérszagra gyûl az éji vad… 🙂
„az,hogy egy int típus hány bájtos az a cputól,fordítótól,oprendszertõl függ!!”
Kizárólag a fordítótól:Pl. ezt win/*nix, 13/32/64 bites processzoron bármelyikén, ez a részlet
short int a;
_AX = a;nézhet ki így, tök mindegy, hogy milyen vas, vagy os van alatta (32 bites szegmenssel):
…00: 0x0000
…02: 66 67 A1 …00 (mov ax, […00])
és ez már nem fog változni, semmilyen procin, mert gépikód – ilyet fog létrehozni a fordító és kész
(16 bites szegmenssel, 16 bites procin csak ez megy)
…02: A1 …00aztán (32 bites szegmenssel):
long int a;
_EAX = a;
…00: 0x00000000
…04: A1 …00 (mov eax, […00])
(16 bites szegmenssel, 16 bites cpu-n ez sem futhat)
…04: 66 67 A1 …00na ezzel valóban az a helyzet, hogy 16 bites processzoron nem fut, bár attól, lehetne az int/longint 32 bites, de sokkal nehezebben lehetne bánni vele, mivel nincs általános célú 32 bites regiszter
long int a;
…00: 0x00000000
…04: mov ax, […02]
……: mov dx, […04]tehát csak praktikussági okokból van ez az int kavarás
(
– az int deffiniciót az általános regiszterek méretéhez igazították
– hogy miért?
– látod is a 66 67 miatt – amit az idétlen 16 bites kompatibilitás miatt van; mert ha a regiszter nem a természetes környezetében van (32 bites regiszter – 32 bites szegmens/ 16 bites regiszter – 16 bites szegmens), akkor az „elõcsalogatásához” + két byte-ra van szükség
– viszont mindenki szeret keveset írni, így egy 32 bites szegmensben egy 16 bites változót illetni a legrövidebb néven, a legnagyobb marhaság, mert erõforrás pazarló
)
de könyörgöm mutass már egy 16 bites processzorral ellátott pc-t? a 386-os processzor már 32 bites…
bár az igaz, hogy a windows a 98-as oprendszerrel bezárólag jórészt nem használta ki a 32 bites processzor elõnyeit, bár a legelsõ 32 bites processzoron, már alig-alig futott (ha futott egyátalán, 486-ra aszem még fel lehetett rakni); ezért egyes fordítókban maradt is az, hogy az int 16 bites…, de ezt már egyre kevesebb fordító használja
a gcc-ben pedig az int mindig 32 bites és azonos méretû, mint a long int, amíg a short int 16 bites, tök mindegy milyen rendszer alatt…
de, ha más fordítóval is ugyanazt a kódot kell elõállítani a short intet, vagy a long intet kell használni. az elõbbi mindig 16 bites, az utóbbi mindig 32 bites (ha jól tudom)Nos, most már belátható, hogy a cpu-tól csak praktikussági okok miatt függhet(ne), de senki nem akar ma 16 bites cpu-val ellátott pc-re programot írni.
Aki pedig egy 386-os, vagy jobb arc.-ával ellátott gépen 16 bites os-t használ meg is érdemli.
De a lényeg az, hogy a fordító olyan gépikódot generál, amilyet akar. (Legfeljebb erõforrás pazarló lesz.)2005-06-14-14:59 #20172642005-06-14-15:38 #2017265ltoa…
char * ltoa ( long value, char * buffer, int radix );2005-06-14-15:45 #2017266Itt találtam róla ném infót: http://ftp.gnu.org/savannah/files/avr-libc…stdlib.html#a24
ha jól értem a radix ha 10 akkor tizes számrendszerbeli számot kapok. Jól értem?
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz