- HiFi műszaki szemmel - sztereó hangrendszerek
- OLED TV topic
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- Milyen billentyűzetet vegyek?
- Milyen TV-t vegyek?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Apple notebookok
- CPU léghűtés kibeszélő
- Házimozi belépő szinten
- Xiaomi Mi Box androidos médialejátszó 4K és HDR támogatással
Új hozzászólás Aktív témák
-
félisten
válasz t.timikee #196 üzenetére
Hali!
Szóval, az elején szögezzük le, hogy ebben a formában a feladat megoldása értelmetlen, azt is leírom majd a későbbiekben, hogy miért.
Nagyon fontos szabály, hogy egy feladat EGYÉRTELMŰEN ÉRTELMEZHETŐ legyen ill különböző módszerekkel történő megoldása esetén is AZONOS EREDMÉNY jöjjön ki.
Tehát értelmezzük a feladatot.
Bemenő adatok: V1,V2(eax,ebx) 32 bites egész
módosított adat: al regiszter ami 1 vagy 0, 8bites egész számAL=(V1 minden bitje >= V2 megfelelő bitje)?1:0
Ez egy feltételes értékadás c/c++-ban, magyarul ha a feltétel IGAZ(V1 minden bitje >= V2 megfelelő bitje), akkor AL=1, ha a feltétel HAMIS, akkor AL=0a "minden bitje" vs. "megfeleő bitje" azt jelenti, hogy az első változó(V1->eax) minden bitjét(32 bit), össze kell hasonlítani a második változó(V2->ebx) minden, azonos helyiértékű bitjével.
A legmagasabb helyiértékű bit(32 bites szám esetén) 31, a legkisebb meg 0.
Tehát a feladat, hogy eax 31. helyiértékű bitjét hasonlítsuk össze ebx 31. helyiértékű bitjével, aztán a 30.-kat a 30.-kal, egészen míg el nem jutunk eax 0. helyiértékű bitjének ebx 0. helyiértékű bitjével való összehasonlításig.Mivel kettes(bináris) számrendszerről beszélünk a bit értéke 0(alacsony) vagy 1(magas) lehet. Tehát az azonos helyiértékű bitek összehasonlításakor 4 eset állhat fenn.
0 és 0, 0 és 1, 1 és 0, 1 és 1.
Most helyettesítsük be a feltételbe, eax adott bitje >= ebx eax-szel azonos helyiértékű bitje
0 és 0 esetén IGAZ, mert egyenlő
0 és 1 esetén IGAZ, mert nagyobb
1 és 0 esetén HAMIS, mert kisebb
1 és 1 esetén IGAZ, mert egyenlőMost pedig jöjjön, hogy miért is értelmetlen a feladat megoldása.
Két módszer amit alkalmazhatunk, hogy vagy 31. bittől megyünk a 0. bit írányába(balról jobbra) vagy a 0. bittől megyünk a 31. bit írányába(jobbról balra). DE, elöbbi esetben teljesen felesleges a 31-től 1. bitek összehasonlítása hiszen az utolsó 0. helyiértékü bit összehasonlításakor veszi vel a végleges értékét AL. Az utóbbiban meg teljesen felesleges a 0-tól 30. bitek összehasonlítása hiszen az utolsó 31. helyiértékü bit összehasonlításakor veszi vel a végleges értékét AL. Nem is beszélve arról, hogy a két módszer két különböző eredményt ad ill. adhat.
Na ezért értelmetlen a feladat megoldása.A feladatot aki feladta, nagy valószínüséggel az volt a szándéka, hogy gyakoroljátok a bitműveleteket, a fenti lehetőség fel sem merült benne.
A feladatot többféleképpen lehet "értelmessé" tenni. Én azt választottam, hogy megszámoljuk hányszor lesz igaz ill hamis a feltétel a bitművelet során, ha az igaz a több akkor AL=1, ha a hamis akkor AL=0, ha meg egyenlő akkor AL=-1.
Itt annyit azért még hozzáfűznék hogy hamis kevesebbszer fordul elő(mint ahogy feljebb látszik), ezért a >= relációt modosítani kellen egyenlőre, így 0 és 1 esetén is hamis lenne.Várom válaszod, megjegyzésed, kérdésed stb.
Ha minden tiszta és a módosítással is egyetértesz, akkor megcsinálom a kódót is.Fire.
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
Új hozzászólás Aktív témák
- IPhone SE 2022 256GB gyári független hibátlan 2026.01.23 gyártói jótállás
- Macbook Pro M1 2020 megkímélt magyar billentyűzet 12 hónap szavatosság számlával!
- Gamer Pc eladó! I5-8500, 16GB RAM, MSI GTX 1080 8GB , 500GB+250GB SSD MAI NAP (11.14) ÁRENGEDMÉNY!
- AMD-RYZEN-9-5950x , ASUS TUF Gaming B550M-Plus , 32GB 3600MHz DDR4 RAM G.Skill Ripjaws Félgép!
- Gamer PC eladó! I5-10600K(3,5Ghz), 16GB RAM, RTX 2060 6GB, 500GB SSD+128GB, 1TB HDD MAI NAP OLCSÓBB!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: HC Pointer Kft.
Város: Pécs