Jump to content

Tavi

LinkManiac
  • Posts

    561
  • Joined

  • Last visited

  • Days Won

    5

Posts posted by Tavi

  1. Operații pe biți

     

    Ce este un bit?

    Un bit este o cifră în sistemul binar, ce poate să aibă valoarea 1 sau 0.

     

    De ce folosesc calculatoarele sistemul binar?

    Calculatoarele moderne funcționează pe baza a două stări: pornit(1), atunci când este prezent un curent și oprit(0), atunci când nu este prezent un curent.Astfel, acest sistem este cel mai practic pentru reprezentarea datelor cu componentele electronice actuale.Discuția poate să meargă mai departe, avantaje și dezavantaje, etc.

     

    Exemplu:

    4 biți => 0001 = 0*23+0*22+0*21+1*20 = 1

     

    Ce este un octet(byte)?

    Un octet este format din 8 biți(ex. 00010101).

     

    Operații cu biți

    ~ - NOT - Inversează biții
    % - AND - "ȘI" pe biți
    | - OR - "SAU" pe biți
    ^ - XOR - "SAU EXCLUSIV" pe biți
    << - SHIFT LEFT - Deplasează la stânga
    >> - SHIFT RIGHT - Deplasează la dreapta
    n = n 1(| << k) - Setarea bitului de pe poziția k al variabilei n la valoarea 1
    n = n& ~ (1 << k) - Setarea bitului de pe poziția k al variabilei n la valoarea 0
    ( &(n >> k)) - Returnează valoarea bitului de pe poziția k din variabila n
    n = n 1(^ << k) - Schimbă valoarea bitului de pe poziția k din variabila n

    Exemplu de salvare a unor numere folosind biți(click pe SPOILER)

     

    #include <stdio.h>
    #include <conio.h>
    
    #define CHAR_BITS 8
    #define MAX_NUMBERS 1001
    #define MAX_SIZE (MAX_NUMBERS/CHAR_BITS + 1)//+1
    
    void SetFlag(unsigned char *n, unsigned int bit);
    void UnsetFlag(unsigned char *n, unsigned int bit);
    unsigned int GetFlag(unsigned char *n, unsigned int bit);
    void ChangeFlag(unsigned char *n, unsigned int bit, int value);
    void DisplayNumbers(unsigned char *n, int max);
    void ResetFlags(unsigned char *n);
    void GetBitPos(int bit, int *pos, int *bitpos);
    
    int main()
    {
    	unsigned char n[MAX_SIZE];
    	int x = 0, max = 0;
    	printf("%d\n", MAX_SIZE);
    	printf("%d\n", MAX_NUMBERS);
    	printf("%d\n", 1001/8 + 1);
    	ResetFlags(n);//Default ramaneau biti setati pe 1 dupa declarare.
    	printf("Introduceti numerele, terminand cu '-1':\n");
    	while(x != -1)
    	{
    		fflush(stdin);
    		scanf_s("%d", &x);
    		if(x >= 0)
    		{
    			SetFlag(n, x);
    		}
    		if(x > max)
    		{
    			max = x;
    		}
    	}
    	//printf("max = %d\n", max);
    	if(max > 0)
    	{
    		DisplayNumbers(n, max);
    	}
    	printf("\nApasati orice tasta pentru a continua...");
    	_getch();
    }
    
    void DisplayNumbers(unsigned char n[MAX_SIZE], int max)
    {
    	int i;
    	printf("Numerele introduse sunt:\n");
    	for(i = 0; i <= max; i++)
    	{
    		if(GetFlag(n, i) == 1)
    		{
    			printf("%d\n", i);
    		}
    	}
    }
    
    void ResetFlags(unsigned char *n)
    {
    	int i;
    	for(i = 0; i < MAX_NUMBERS; i++)
    	{
    		UnsetFlag(n, i);
    	}
    }
    
    void SetFlag(unsigned char n[MAX_SIZE], unsigned int bit)
    {
    	int pos, bitpos;
    	GetBitPos(bit, &pos, &bitpos);
    	n[pos] |= 1 << bitpos;
    	//printf("Bitpos: %d, Pos: %d, n[pos]: %d\n", bitpos, pos, n[pos]);
    }
    
    void UnsetFlag(unsigned char n[MAX_SIZE], unsigned int bit)
    {
    	int pos, bitpos;
    	GetBitPos(bit, &pos, &bitpos);
    	n[pos] &= ~(1 << bitpos);
    	//printf("Bitpos: %d, Pos: %d, n[pos]: %d\n", bitpos, pos, n[pos]);
    }
    
    unsigned int GetFlag(unsigned char n[MAX_SIZE], unsigned int bit)
    {
    	int bitval, bitpos, pos;
    	GetBitPos(bit, &pos, &bitpos);
    	bitval = 1 & (n[pos] >> bitpos);
    	//printf("pos: %d, n[pos]: %d", pos, n[pos]);
    	//printf("bitpos = %d, pos = %d, bitval = %d\n", bitpos, pos, bitval);
    	return bitval;
    }
    
    void ChangeFlag(unsigned char n[MAX_SIZE], unsigned int bit, int value)
    {
    	int pos, bitpos;
    	GetBitPos(bit, &pos, &bitpos);
    	n[pos] ^= (-value ^ n[pos]) & (1 << bitpos);
    }
    
    void GetBitPos(int bit, int *pos, int *bitpos)
    {
    	*pos = bit/CHAR_BITS;
    	*bitpos = bit % CHAR_BITS;
    }
    

     

    Avantajul constă în folosirea unei spațiu mai mic pentru stocare.Atunci când se declară o variabilă, se alocă spațiul necesar stocării unei valori, dar dacă valoarea nu va fi niciodată aproape de maximul ce poate fi stocat, acea memorie se pierde.Deci, în loc de a declara un vector de 1000 de elemente(integer, char, etc. fiecare având mai mult de 1 bit), se declară unul de 1000/VALOAREA_UNUI_CHAR_ÎN_BIȚI și se pune un "flag"(un 1) acolo unde dorim să stocăm valoarea.

     

    De exemplu, dacă fiecare char are 8 biți și avem un vector de n elemente de tip char, a[n], atunci pentru a stoca valoarea 2, vom seta bitul 3 al a[0] pe 1(se începe de la 0).Atunci când valoarea trece de 7, se va modifica și index-ul vectorului a, deci va fi a[1], iar bitul va începe iarăși de la 0 la 7 și tot așa la fiecare a 8-a valoarea(a[2], a[3]...a[n-1]).

     

    • Upvote 5
  2.  

     

     

     

    Credeam că ai jucat pentru ei. 

     

     

     

    Am câştigat un mouse G500S prin intermediul lor. :D

    Şi-acum pun mâna pe el. ;;)

     

    Sa-l stapanesti sanatoasa. :))

    Ne jucam MU impreuna?

     

    FluffyPaws. :D

     

    Why do I still remember that, lol.

     

    Get a room!

     

    You're not my real mom, you can't tell me what to do. [-(

     

    I know it's gonna sound crazy, but nothing you see is real.You are caught in a 3D universe and the only way out is to return to the spawnpoint.You probably won't believe this too, but...I'm your mother.

    • Upvote 2
  3.  

     

    Credeam că ai jucat pentru ei. 

     

     

     

    Am câştigat un mouse G500S prin intermediul lor. :D

    Şi-acum pun mâna pe el. ;;)

     

    Sa-l stapanesti sanatoasa. :))

    Ne jucam MU impreuna?

     

    FluffyPaws. :D

     

    Why do I still remember that, lol.

     

    Get a room!

    • Upvote 1
  4. Salut,

     

    În ce sens "nu funcționează" cele două opțiuni rămase?Ce se întâmplă când alegi o opțiune?

     

    PS:Se scrie "aceeași" în contextul ăla.

  5. wmNb4rt.png

    Aaaand I'm not sleeping tonight.

     

     

    PS:Scuze de double post.Merge them!

     

     

    Cand se termina de instalat, o sa pornesc un stream pe twitch.Stay tuned!

     

     


    BREAKING: The #FM15 Beta is now live on Steam. It's time to redeem those codes!

    If you pre-ordered from Steam, simply quit & restart, and you'll then find the Beta in your Steam Library. 

    If you pre-ordered from elsewhere and haven't been sent a Beta code, please contact your retailer. 

    As this is a Beta version of the game, should you encounter any issues please report them here: http://bit.ly/FM15BugForum 

    If you haven't yet pre-ordered, you can get immediate access to the #FM15 Beta now by visiting bit.ly/FM15Steam

     

     

    Stie cineva daca la Altex primesti beta key?

    • Upvote 1
  6. Bun de tot :) arata. Eu sunt old time gamer pe FM..inca de prin 2009? sau si mai vechi.

    Sper sa aduca niste noutati vizibile si reale..caci ultimile 2 macar..au semanat extrem de mult unul cu celalat.

    PS le cumpar de pe Steam..deci nu am emotii cu lansarea 

    Aiurea pentru cei care fac colecție de cutii(carcase/box-uri).Și eu am început să cumpăr jocul în variantă fizică de la 2012 și chiar căutam variantele vechi ca să-mi completez colecția,,.am înțeles totuși că Altex o să ia de la un distribuitor din UK și tot o să-l avem.

    • Upvote 1

  7. Din păcate, 13 octombrie este o zi cu ghinion pentru fanii din România ai jocului FM 2015. Anul acesta nu vom mai avea posibilitatea de a cumpăra jocul localizat din cauza vânzărilor slabe din anul trecut. Astfel, la această oră am confirmarea că nu există distribuitor oficial SEGA în România pentru Football Manager 2015. Le mulţumim tuturor celor care au piratat jocul şi au contribuit la vânzările scăzute de anul trecut.

    Mda.

  8. large-1-640x350.jpg

    We’re delighted to announce that Football Manager 2015 for PC, Mac and Linux will be released on Friday 7th November. The release date of Football Manager 2015 was leaked at the Premiere of The Football Manager Documentary on Tuesday 7th October at the end of the 

     which you can watch below now or visit the SI Games YouTube channel later.

    As always, if you’re desperate to get your hands on FM15 before the official release date, you can pre-order FM15 from a digital or physical retailer and you’ll receive the Beta version approximately 2 weeks prior to the full release of FM15. Furthermore, careers started in the Beta version will also continue in the full game.

    Keep up to date with more #FM15 news via both @FootballManager and @milesSI on Twitter.

     

     

    Screens:

    post-1-0-01686900-1412889213_thumb.jpg

    post-1-0-95745600-1412889285_thumb.jpg

    post-1-0-92662900-1412919854_thumb.jpg

    post-1-0-95089300-1412919855_thumb.jpg

    post-1-0-30949400-1412921924_thumb.jpg

     

     

     

    • Upvote 1
  9. Du-l la service si spune-le sa verifice firele de la placa de baza, sau verifica tu daca te pricepi.Mai ales daca ai de la Gigaby(t)e.Si mie mi s-a intamplat si stiu ca erau prost lipite/conectate.Sau mai intai porneste PC-ul si intra in BIOS apoi lasa-l pornit asa cateva ore.Daca se restarteaza, cel mai probabil de la asta e.

  10. Totul are un inceput.

     

    # Cabron il critica cumva pe Uzzy?Mai trebuia sa zica de Ombladon ca e comercial si isi taia singur creanga de sub picioare.Cabron e un baietas care a nascut din cenusa fiindca a dat mana cu Illuminati.

    Big fail.N-ai inteles melodia.

     

    Haideti totusi sa fim on-topic si sa lasam discutiile astea pentru alte topic-uri.

    • Upvote 2
  11. La "Interface" selectati WAN6 daca aveti conexiune de tip ADSL si WAN3 daca aveti conexiune de tip VDSL!

    Am gasit asta pe un site...nu stiu cum e la router-ul tau si ce optiuni mai ai...citeste si in manual cum se fac toate chestiile astea.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...