Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

API return value

[es] :: C/C++ programiranje :: API return value

[ Pregleda: 2426 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

roy_

Član broj: 129621
Poruke: 2
*.adsl.net.t-com.hr.



Profil

icon API return value13.01.2007. u 19:06 - pre 210 meseci
Pozdrav, naisao sam na problem kod koristenja nekih api-a!
kada na msdnu pise za return value npr. 'if the most significant bit is set then...' ili 'if the least significant bit is set then...', moze li mi itko objasniti kako provjeriti takav return value ili dati neki link gdje bi vise mogao procitati o tome..

hvala unaprijed!
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: API return value13.01.2007. u 22:29 - pre 210 meseci
Prvo treba da utvrdiš veličinu te povratne vrednosti, tj. da li je 16-bitna, 32-bitna, i sl.

Recimo da je 16 bitna.

1000000000000000 <--- most significant bit
0000000000000001 <--- least significant bit

...tvoj zadatak je da proveris da li je postavljen recimo "most significant bit":

1000000000000000 binarno == 8000 hex

Code:

if ( x & 0x8000 ) // <--- x je povratna vrednost API-ja
{
   // jeste most // <--- primeti da se proverava samo prvi bit, i da ce se u ovaj blok doci cak i kada je vrednost recimo 1100000000000000
}
else
{
   // nije most
}

...za "least signifficant" koristi 0x0001.

Postoje i drugaciji nacini ispitivanje ovoga sa obicnim vece, manje, pa cak i sa shiftovanjem,
ali ovo je jedno od resenja.

U svakom slucaju, prouci poglavlje gde se pominje binarna aritmetika.



[Ovu poruku je menjao X Files dana 13.01.2007. u 23:48 GMT+1]
 
Odgovor na temu

rumpl

Član broj: 54959
Poruke: 156
*.net81-66-199.noos.fr.



Profil

icon Re: API return value13.01.2007. u 22:46 - pre 210 meseci
Ako je 'if the least significant bit is set then...' onda je to neki pozitivan broj
Ako je 'if the most significant bit is set then...' onda je to neki negativni broj

Na primer:
INT_MAX = 11111111111111111111111111111110 = 2147483647
INT_MAX = 2^0*1 + 2^1*1 + .... + 2^32*0
INT_MIN = 00000000000000000000000000000001 = -2147483648
INT_MIN = 2^0*0 + .... + 2^32*1

Evo ti jedan mali program napisan na brzaka koji ti omogucava da vidis bilo koji broj u binarnom obliku:
Code:

#include <stdio.h>
#include <limits.h>

#define TEST_BIT(num, x) (num & (1 << (x - 1))) ? 1:0

int main()
{
  int i;
  int max = INT_MAX;
  int min = INT_MIN;

  for(i = 1; i <= 32; i++)
    printf("%d", TEST_BIT(max, i));

  printf("\n%d\n", max);

  for(i = 1; i <= 32; i++)
    printf("%d", TEST_BIT(min, i));

  printf("\n%d\n", min);

  return(0);
}

"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
 
Odgovor na temu

pajac
Slovenija

Član broj: 17163
Poruke: 66
*.dynamic.dsl.t-2.net.



Profil

icon Re: API return value14.01.2007. u 19:26 - pre 210 meseci
Hehe, sa time sam se ja zezo kod sistemskog programiranja na unixu :)

Kad sam 1put učio C, "preskočio" sam to poglavje i mislio, da mi neče nikad trebat.E, pa malo sam se zenuo :))
If we want to discover, we first have to be willing to get lost!
 
Odgovor na temu

roy_

Član broj: 129621
Poruke: 2
*.adsl.net.t-com.hr.



Profil

icon Re: API return value14.01.2007. u 21:57 - pre 210 meseci
puno hvala na odgovorima!
sve je jasno ;)
 
Odgovor na temu

alexione
Aleksa Todorovic
Sremski Karlovci

Član broj: 46927
Poruke: 29
80.74.160.*



Profil

icon Re: API return value22.01.2007. u 00:31 - pre 210 meseci
Samo mala ispravka:

Citat:
Ako je 'if the least significant bit is set then...' onda je to neki pozitivan broj


ne mora obavezno da znaci... recimo 0x11111111 (32x1) je -1 iako ima 'least significant bit set'

Citat:
Ako je 'if the most significant bit is set then...' onda je to neki negativni broj


yeya! :)
 
Odgovor na temu

rumpl

Član broj: 54959
Poruke: 156
*.net81-66-199.noos.fr.



Profil

icon Re: API return value22.01.2007. u 19:29 - pre 210 meseci
@alexione
Tacno, bas sam glup ponekad...

Ispravka:
'if the most significant bit is NOT set then...' onda je to neki pozitivan broj
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
 
Odgovor na temu

[es] :: C/C++ programiranje :: API return value

[ Pregleda: 2426 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.