Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'binaire'.

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Discussions communautaires
    • Annonces importantes
    • Suggestions
    • Postulation
    • Présentation des membres
    • Discussions générales
    • Multimédias
    • Jeux vidéos
    • Actualités
    • Aide / Support
    • Études
    • Archives
  • Informatique
    • Projets des membres
    • Autres / Divers / Découvertes
    • Crypto-monnaie(s)
    • Hardware / Electronique
    • Réseaux
    • Gestion de serveur
    • Système d'exploitation : Smartphone
    • Système d'exploitation : Ordinateur
  • Programmation
    • Projets des membres
    • Développement web
    • Développement de logiciels
    • Développement d'applications pour smartphones
    • Outils du développeur
    • Aide / Support
  • Emulation
    • Aion
    • Arma III
    • Dofus
    • Dragonica
    • Emulateurs consoles
    • S4 League
    • FlyFF
    • Grand Theft Auto
    • Minecraft
    • Tera
  • Partenariats
    • <b>WoW Emu - La communauté émulation WoW</b>
    • <b>ActuGaming</b>
    • <b>H-Wars</b>
    • <b>EasyChat - Solution gratuite de chat client et serveur (anciennement Melichat)</b>
    • <b>Le Monde des Lunes</b>
    • <b>DansTonCode</b>

Rechercher les résultats dans…

Rechercher les résultats qui…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


Skype


Site web


AIM


MSN


ICQ


Yahoo


Jabber


Tox


Centres d'interêts


Localisation


Niveau d'étude

2 résultats trouvés

  1. Bonjour à vous ! Avant de commencer, et avant que vous me criiez dessus, je tiens à m'expliquer : J'ai eu beaucoup d'idées de tutos pour Melinyel, de sujets qui me passionnent, et qui j'espère vous aideront. Et pour certains, la numération est importante pour bien comprendre, c'est pourquoi je refais un cours un peu plus poussé que celui existant déjà, en expliquant vraiment comment compter dans toutes les bases. Sur ce, commençons ! I - Introduction Une petite introduction est toujours la bienvenue, Pour essayer de comprendre comment marchent certains aspects de l'informatique, il est préférable de comprendre comment compter en base 2 (binaire) ou même en base 16 (hexadécimale), pourquoi ? Car l'ordinateur ne sait pas compter après 1, il connait juste "0" et "1". Il est un peu bête me diriez vous, mais c'est tout à fait normal. En réalité, le "0" (ou 0 logique) signifie qu'il n'y a pas de courant (ou état bas, ou état 0) et le "1" (ou 1 logique) signifie qu'il y a du courant. A partir de la, l'ordinateur peut tout faire. Seulement, si nous devions communiquer avec lui en binaire, on n'aurait pas fini. C'est pourquoi on a crée les langages de programmation, qui servent d'intermédiaire entre le langage humain et le binaire pour communiquer avec l'ordinateur. Enfin la, je commence déjà a divaguer. Dans ce cours, nous allons nous intéresser à : Compter dans n'importe quelle baseLe binaire (compter, et faire des additions)L'hexadécimal (qui est étroitement lié au binaire, vous verrez) Ce cours sera sans doute un peu long, et fastidieux, j'essaierai d'être le plus clair possible, et le moins scolaire possible ^^ N'hésitez pas a poser vos questions, et faire des remarques ! II - Compter dans n'importe quelle base En réalité, quand je vous parle de base arithmétique, vous me prenez pour un dingue, qui parle une langue inconnue. Mais sans le savoir, vous savez déjà compter en base 10. Et oui Jamie, quand on compte dans la vie de tous les jours, on utilise une base décimale (ou base 10) ! Concrètement, qu'est-ce que ça signifie ? Que vous avez 10 caractères "disponibles" pour compter (de 0 à 9) et qu'avec ça, on peut faire tous les nombres qu'on veut (en base 10) Prenons un nombre au hasard : 542. 542, c'est quoi ? C'est 5 centaines + 4 dizaines + 2 unités Quoi ? Je vous prends pour des bébés ? Tant mieux ^^ Pour parler un peu plus mathématiquement, 542 = 5*100 + 4*10 + 2*1 ou même mieux : 542 = 5*(10^2) + 4*(10^1) + 2*(10^0) (lire (10^2) = "10 exposant 2") C'est comme ça qu'on compte en base 10, et le principe est le même dans les autres bases. Je vous explique : Pour compter dans une base arithmétique, on reprends le même principe : (Numéro de la base)^0 puis 1 puis 2 etc... Je suis d'accord que c'est flou, mais on va l'appliquer directement au binaire, vous devriez comprendre. III - Compter en binaire Le binaire, comme son nom l'indique est en faite la base 2. Dans cette base, par pure convention, on appelle chaque caractère un "bit" et on aime travailler sur des systèmes de 8 bits (ou "octets"). Attention : bit et Byte sont de faux amis. bit = bit et Byte est la traduction anglaise d'octet donc 8 bits = 1 Byte (Byte a toujours un B majuscule) On obtiens donc la grille suivante pour un octet : Bon, c'est bien beau, mais concrètement, comment on passe du décimal au binaire ? Vous vous souvenez, un peu plus haut, je vous ai montré comment compter dans n'importe quelle base ? Appliquons-le ici, voila les valeurs que prennent chaque case (en rouge, c'est la valeur en base 10) : Cette grille est quelque chose d'utile à savoir, a mon sens, c'est la base de tout. Pour convertir un nombre décimal en binaire, il existe plusieurs méthodes : Vous connaissez déjà le résultat. La, pas de soucis.A la calculatrice (si elle le fait)A la main : C'est la partie que l'on va approfondir un peu ici, car c'est la plus amusante ! Donc comment faire ? Pour expliquer, on va passer par un exemple : Prenons le fameux nombre 42, on va le convertir en binaire. Vous êtes prêts ? On y va ! L'idée ici est de faire une succession de divisions par 2, du nombre que l'on veut convertir en binaire. Les restes des divisions successivs lus de droite à gauche composeront notre nombre en binaire. Pour se rendre compte de l'intérêt de cette méthode, nous allons poser les divisions : Ce qui donne au final : Je reconnais que au début, c'est fastidieux, c'est long, il faut du papier pour écrire. Mais comme on dit, c'est en forgeant qu'on devient forgeron, et plus vous en faites, mieux ça ira ! C'est exactement le même principe pour tous les autres nombres. Aller, je vous en donne quelques un avec les réponses, mais essayez de les faire sans regarder ! 5 127 186 254 357 Et voila les réponses : Vous avez compris tout ça ? Parfait, on va pouvoir faire quelques additions ! N'ayez pas peur, c'est très simple. Vous savez faire une addition en base 10 ? (Avec des retenues hein, faut pas déconner non plus ! ) Vous saurez donc faire une addition en base 2. Je vais encore une fois illustrer mes propos par un exemple, essayons de faire : 101010 + 1010 (En décimal, c'est 42+10). On pose l'addition : Et c'est parti, on résoud ! 0+0, pas de surprise, ca fait la tête a toto 01+1, on serait tenté de dire 2 hein ? Sauf que, en binaire, on a seulement 0 et 1, donc 1+1 = 10. Ici, on notera 0, et on retiens 1 ! On en arrive ici : 0+0+1 = 11+1 = 10, donc je note 0 et je retiens 10+0+1 = 11+0 = 1 Et voila, on arrive à ce résultat : Et normalement, 110100 devrait donner 52, on vérifie : 32 + 16 + 4 = 52 On a tout juste ! Bravo ! Voila, pour la base du binaire. Je ne ferais pas les autres opérations (du moins pour le moment peut être), et je n'aborderai pas les nombres négatifs (que l'on appelle le Complément à 2 ou Cà2 pour les intimes). On va brièvement passer à l'hexadécimal, je veux surtout vous montrer une méthode efficace pour passer du binaire à l'hexa, et inversement car le reste, vous savez le faire maintenant ! C'est parti ! IV - L'hexadécimal : Ou compter avec des lettres (WTF ?!) L'hexadécimal est donc la base 16. Vous me direz, comment on peut faire une base 16, alors que on n'a que 10 chiffres de disponibles ? Eh bien, en mettant des lettres. en effet l'hexadécimal contient 16 caractères de 0 à F. On peut donc montrer le tableau suivant : Source Note : On notera un nombre en Hexadécimal avec le préfixe 0x (Exemple : 0xFF) Voila, vous savez tout. Passons donc directement à la conversion binaire <-> hexadécimal Vous me direz : "C'est plutôt simple, il suffit de passer par le décimal !" On pourrait, mais on perdrait trop de temps, et nous on cherche plutôt à en gagner ! Heureusement pour nous, les choses ont été bien faites. Prenons 4 bits en binaire. On a 16 valeurs possibles (de 0000 à 1111). Comme l'hexadécimal me direz vous, et bien oui ! Un "quartet" (4 bits) est en fait un caractère hexadécimal. Pour la conversion, c'est plutôt simple : Prenons par exemple 10010110 que l'on veut convertir en Hexa. On divise l'octet en quartets, on a donc : 1001 et 0110 Suivant le tableau ci-dessus, on a 1001 = 0x9 et 0110 = 0x6 Donc 10010110 en binaire vaut 0x96 en hexa. Simple non ? Ca marche aussi dans le sens inverse, Cherchons a convertir 0xA2 en binaire : 0xA = 1010 en binaire et 0x2 = 0010 en binaire Donc 0xA = 10100010 en binaire et vaut 162 en décimal. V - Les entiers relatifs Bon, jusqu'à maintenant, nous n'avons vu que les entiers naturels, c'est à dire les entiers positifs. C'est pas mal, mais on peut pousser le vice encore plus loin, de façon à ce que ça soit plus pratique (effectivement, si on ne doit faire que des additions ou des soustractions qui ont un résultat positif, on n'est pas rendus...) Notez que dès maintenant, je me situerai en base 2. Le principe de conversion restant le même, je n'ai plus besoin d'y revenir Comment on note des nombres négatifs en binaire ? C'est simple, pour ça on va utiliser ce qu'on appelle le "Complément à 2" C'est quoi le Complément à 2 ? Eh bien, c'est le complément à 1 + 1. Tout simplement. Comment différencier un nombre positif d'un nombre négatif en complément à 2 ? On va a voir ce qu'on appelle un "bit de signe" qui sera situé à gauche (on dit que c'est le bit de poids fort ou "MSB") de notre nombre en binaire. Lorsque le bit de signe est à 0, le nombre est positif et lorsque le bit de signe est à 1, le nombre est négatif. Seulement, comment savoir quel bit est le bit de signe ? Très bonne question ! En réalité, avant de convertir un nombre en complément à 2, on se place dans un intervalle de n bits (on dit, le nombre que je vais convertir est codé sur n bits) ce qui donne l'intervalle suivant : [-(2^n)/2 ; ((2^n)/2)-1] Pourquoi ((2^n)/2)-1 ? Car il y a le zéro au milieu qui n'est ni positif, ni négatif, mais qui est tout de même présent, il faut donc lui laisser un place dans l'intervalle. Bref, attaquons ! Plus concrètement, mettons que l'on ait (0101)B (0101 en binaire), comment obtenir l'opposé ? Pour cet exemple, notre nombre est codé sur 4 bits, donc on est sur l'intervalle [-2^4/2 ; ((2^4)/2)-1], ou encore [-8;7]. Et le MSB ici est égal à 0 donc le nombre (0101)2 est bien positif. On peut le convertir : Il nous suffit de faire une inversion bit à bit, et de rajouter 1. Regardons le résultat : C2(0101) = (1010)2 + 1 = (1011)2 Note : En complément à 2, 1011 = 1111111111011 peu importe le nombre de "1" présents à gauche, du moment qu'il y en a un pour dire "c'est un nombre négatif", on peut en mettre une infinité. Voila, (1011)2 = -5. C'est simple non ? Vous cherchez maintenant à convertir un nombre négatif en nombre positif ? Eh bien sachez que c'est EXACTEMENT la même méthode. Inversion bit à bit +1. Tout simplement. Vous savez donc aussi maintenant écrire des nombres négatifs en Hexadécimal Cà2 ! C'est fou qu'on apprend vite Aller, on passe a quelque chose de beaucoup plus subtil ! VI - Tous les réels On a donc vu les entiers naturels, les entiers relatifs. Mais il serait intéressant de pouvoir exprimer des nombres à virgule non ? Par exemple, comment exprimer -12,75 ? Vous pensez que c'est impossible ? Vous faites erreur ! PS : Je signale que cette partie est nettement moins compréhensible que les précédentes. Il se peut que je m'embrouille moi même dedans, n'hésitez pas à me corriger ! Pour exprimer un réel, il est préférable de se positionner sur beaucoup de bits (vous allez comprendre pourquoi). Ici, j'utiliserai 32 bits (Norme IEEE 754) que l'on va découper en 3 parties comme l'image suivante : Dans notre cas, il y aura : 1 bit de signe8 bits d'exposant23 bits de mantisse Comme ceci : Du charabia hein ? Il faut savoir que la mantisse ne prends pas les valeurs que l'on a pu voir jusqu'à maintenant. On prends le MSB de la mantisse, il a la valeur 2^-1 et on augmente l'exposant au fur et à mesure que l'on se décale sur la droite. Ce qui donnerait donc : 2^-1 2^-2 2^-3 ... 2^-23 (pour 32 bits). En fait, c'est très simple. Le nombre réel correspondant à un nombre binaire suit la formule suivante : R = (-1)^s * (1+m) * 2^(e-127) Avec : - s : La valeur du bit de signe - e : La valeur de l'exposant - m : La valeur de la mantisse On est bien avancés avec ça... Hé bien, a vrai dire, plutôt Essayons d'exprimer le nombre suivant en décimal : (1 10000010 01100000010000000000000)2 (Hé oui, on est sur 32 bits !) Je suis gentil, je vous ai fait les séparations des différentes parties Donc on a : e = 128 + 2 m = 2^-2 + 2^-3 + 2^-10 = 1/4 + 1/8 + 1/(2^10) = 0,3759765625 En appliquant la fameuse formule, on a : R = (-1)^1 * (1,3759765625) * 2^(130-127) = -11,0078125 Sympathique n'est-ce pas ? Vous êtes encore présents ? Aller, on fait dans l'autre sens ? Reprenons -12,75. Qu'avons nous ? Regardez la photo suivante : (Source : Mon cours sur les systèmes informatiques) Et voila, vous savez tout ! Si vous avez des questions ou des remarques, n'hésitez pas ! Pirkoa
  2. Bonjour, voici une présentation des bases de l'électronique numérique : la logique Booléenne ( ou algèbre de Boole ) . Sujet en général passionnant pour les fans d'informatique et d'électronique Tout d'abord, qu'est-ce qui ce cache derrière ce nom étrange ? : L'algèbre de Boole, ou calcul booléen, est la partie des mathématiques, de la logique et de l'électronique qui s'intéresse aux opérations et aux fonctions sur les variables logiques. Plus spécifiquement, l'algèbre booléenne permet d'utiliser des techniques algébriques pour traiter les expressions à deux valeurs du calcul des propositions. Elle fut initiée en 1854 par le mathématicien britannique George Boole. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques. Elle fut utilisée la première fois pour les circuits de commutation téléphoniques par Claude Shannon. Merci Wikipédia Avant de lire ce post, je vous conseille de savoir compter en binaire, si ce n'est pas votre cas, vous trouverez des explications claires ici : Bien, vous savez compter en binaire mais vous ne savez toujours pas concrètement ce qu'est l'algèbre booléenne, on avance pas décidément. L'algèbre de Boole consiste à traiter les informations avec la plus simple ( et pourtant tellemeeeeeeent complexe... ) des logique, ici l'information est soit vraie, soit fausse ( 1 ou 0 ) pas de doute possible. On va donc associer ces 0 et ces 1 grâce à ce que l'on appelle des fonctions logiques. Je vous propose donc d'étudier ces fonctions logiques de base puis de s'amuser avec pour voir leur potentiel ! I / fonctions logiques ( ou opérateurs logiques ) A/ fonction ET (conjonction) AND nous allons représenter cette fonction par un petit schéma... a et b sont nos entrées et L est la sortie de al fonction logique. Voici l'équation : L = a . b ( à lire L = a ET b ) rappelons que nous travaillons en binaire, a et b valent donc soit 0 soit 1. l'équation nous dit que L ne vaut 1 si et seulement si a ET b valent tous deux 1... d'où le nom. Un autre outil sympathique pour se représenter une fonction logique est ce que l'on appelle une table de vérité : les lignes sont à lire ainsi = "0 et 0 font 0", "0 et 1 font 0" ... et ainsi de suite. B/ fonction OU (disjonction) OR allon un peu plus vite : avec l'équation : L = a+b ( à lire L = a OU b ) C / fonction NON (négation) NOT D / fonction NON ET (conjonction négative) NAND Il s'agit en fait d'une fonction ET suivie d'une fonction NON E / fonction NON OU (disjonction négative) NOR F / fonction OU EXCLUSIF ( disjonction exclusive ) XOR En général les débutants butent un peu sur celle-là... on peut la traduire ainsi : a OU b MAIS pas les deux. Voici comme d'habitude schéma, table de vérité et équation : Fun fact : les développeurs Assembleur utilisent souvent cette fonction pour remettre à 0 une variable ( un registre ) : xor ax,ax en effet, si vous vous amusez à poser l'opération ( imaginons que ax vaut 42, soit 00101010 ) : 00101010 xor 00101010 = 00000000 et oui, 0 ou 0 mais pas les deux, ça fait 0 ; 1 ou 1 MAIS PAS LES DEUX, ça fait 0... cette méthode est plus courte (en nombre d'octet) que de mettre 0 dans la variable directement : mov ax, 0 Mais on s'éloigne du sujet originel... il nous reste une dernière fonction logique ! G / fonction NON OU EXCLUSIF (disjonction exclusive négative) XNOR Il s'agit bêtement d'une xor avec une not derrière... Vous remarquez cette bulle derrière la fonction logique à la place d'un petit triangle ? c'est une autre représentation pour dire que l'on à inversé la sortie ( on y a mit une fonction NON ). Pfiou c'est fini pour la présentation bête et méchante des fonction logiques ! à noter qu'il en exister deux trois autres telles que l'implication ou l'inhibition mais bon, moins utilisées. Petit bonus : le théorème de De Morgan : première loi : deuxième loi : Vous êtes normalement capables de comprendre ceci par vous-même et j'aurais bien du mal à vous l'expliquer mieux que l'équation ! Le meilleur moyen de le maitriser est de faire des exercices... mais je n'ai pas mon cours sous la main Si ça vous intéresse : http://fr.wikipedia.org/wiki/Lois_de_De_Morgan II / faire du calcul ! aaaaaaaaah ! enfin quelque chose d'intéressant ! A / les additionneurs ( adders ) Voyons comment votre ordinateur fait des additions... (à peu près, les ingénieurs de proco on depuis longtemps abandonné cette méthode pour se tourner vers des additionneurs plus performant, notamment le Kogge-stone adder, qui est un carry-look-ahead adder (additionneur à calcul anticipé de retenue ) mais c'est pour une autre histoire ! ) commençons doucement avec le demi additionneur (half-adder) : nous allons additionner deux bits, le bit A et le bit B ( ça va pour le moment ? ) dans le cas où les deux valent 1, on aura 2 en sortie, n'est-ce pas ? il nous faudra donc prévoir deux bits de sortie pour écrire 2 en binaire : 10. Nous avons donc une sortie et une retenue, la sortie correspond à 20 et la retenue à 21 , respectivement nommées S et C (pour carry, retenue en anglais) les équations : C = A.B S = A⊕B schéma et table de vérité : Vous remarquerez que le schéma utilise des fonctions logiques que vous n'avez jamais vues... en fait c'est la représentation américaine (Wikipédia m'a lâchement lâcher (ooh un pléonasme ! ) sur ce coup), croyez-moi la fonction du dessus est une XOR et celle du dessous est une AND. faites un tour ici pour avoir les versions françaises et américaine côte à côte : http://en.wikipedia.org/wiki/Logic_gate Bien, nous pouvons maintenant additionner deux bits... mais qu'en est-il si nos nombres font plus de 1 bit chacun ? Il faudrait faire un half adder sur chaque couple de bits ( les 20 avec les 20, les 21 avec les 21 etc...) puis faire un half-adder entre la retenue des 20 et la sortie des 21 et puis.... et puis on s'écroule sur la table parce que dès qu'il y a plus de 4 bits sur chaque nombre, même le schéma sur une feuille de papier avec un crayon devient un vrai clavaire (j'ai déjà essayer en 4e...). C'est pourquoi on a inventé le full-adder ! Ce petit bijou fait la différence entre la retenue entrante et la retenue sortante, il additionne ainsi trois bits et possède deux bits en sortie. en reliant la retenue sortante (carry out) à la retenue entrante (carry in) du full-adder suivant, on additionne nos nombre sans avoir à gérer un truc ultra-compliqué. on a : A+B+Cin = S+Cout (ici le + est un "plus" et non pas un OU). Pour les équations : S = (A⊕ B )⊕Cin Cout = (A. B ) + (Cin . (A⊕ B ) ) Donc oui la fonction logique tout 0 droite est bien une OU. Je vous avais parlé de relier le Cout d'un adder au Cin du suivant... cela s'appel chainer les additionneurs, mettons que nous voulons faire A+B (plus hein, pas OU) mais que A et B font tous deux 4 bits, ils seront composé comme ceci : A3A2A1A0 et B3B2B1B0 et on chaine les adders comme suit : Et bien ma foi, nous voici rendu avec les additions ! B / la soustraction Et là, c'est le drame, vous avez peur de devoir vous replonger dans des schéma compliqués et incompréhensibles et tout reprendre de 0... Mais non ! si nous rusons il y a moyen de reprendre le travail déjà fait jusque là . Rappellez-vous ... A-B = A+(- B ). Cours de maths niveau 5e. Et pour trouver l'opposé d'un nombre binaire, c'est très simple. Cherchons -12. prenons la valeur absolue : (0b00001100), inversez-le bit à bit => 0b11110011, puis ajouter 1 => 0b11110100. Et voilà votre nombre en binaire signé ( complément à deux ) ! simple non ? et avec des fonctions logiques ? il suffit d'appliquer la fonction NON sur notre chiffre... puis de le faire passer dans un adder avec un 1. Mieux encore, regardez le schéma des full-adders chainés, n'y voyez-vous pas une première retenue entrante inutile ? le voilà notre 1 à ajouter ! pour faire une soustraction, il suffit de faire une addition, sauf que l'on met la première Cin à 1 et que l'on fait passer B par une fonction NON . Mais il y a encore mieux, on peut utiliser le même chainage d'adders pour faire des additions et des soustractions ! il suffit de faire passer B par des fonction XOR, la deuxième entrée de chaque XOR étant reliée... à Cin, ainsi si Cin est à 0, B reste inchangé, Cin est à 0 (sans blague ) et on fait une addition entre A et B. Si Cin est à 1, le XOR va inverser chaque bits de B et le chaînage d'adders va ajouter 1 en plus, on aura une soustraction entre A et B (A-B pour être précis) . en image : photoshop pro here ! Et bien voilà... vos neurones peuvent désormais reposer en paix. Si vous voulez plus de masturbation intellectuelle faites-le moi savoir et je m'attaquerai aux multiplicateurs... et si vous voulez du hardcore je vous proposerai des diviseurs... et pour l'orgasme intellectuel, il y a le sujet qui me tient le plus à coeur : les carry-look-ahead adders ( comme le kogge-stone adder dont j'avais mentionné l'existence ).
×
×
  • Créer...