Bonjour, comment on est censé savoir si 1010 en base 2 correspond à -6 et pas à 10 s'il vous plait ?
Merci.
-----
Bonjour, comment on est censé savoir si 1010 en base 2 correspond à -6 et pas à 10 s'il vous plait ?
Merci.
Bonjour,
En arithmétique, les nombres déclarés négatifs sont précédés du signe '-'. C'est une convention. Donc, 1010 en binaire vaut 10 en décimal.
En informatique, il n'existe que deux caractères, '0' et '1'. La convention '-' n'est donc pas possible, il a fallu en trouver une autre : c'est le caractère le plus à gauche.
Si vous aviez posé la question dans le forum "informatique", j'aurais répondu la même chose mais en inversant l'ordre des phrases.
Bonjour.
1010 en binaire correspond à 8+2=10. -6 s'écrit -110b.
Il ne faut pas confondre l'écriture en base 2 (ou autre) et le codage d'un nombre en informatique. Il n'y a qu'une seule écriture binaire, mais des tas de codages. 1010 en codage DCB c'est le décimal 12. Et il y a plusieurs codages pour les négatifs.
Cordialement.
D'accord merci.
J'avais mal compris le truc, il met un 1devant en fait: http://villemin.gerard.free.fr/Wwwgv...RE/Negatif.htm
Ca fait donc -6 = 11010.
Mais la question qui se pose maintenant, c'est comment différencier ça de 11010 positif.
Impossible à dire sans connaître le format de codage informatique ou mathématique (format fixe et quel taille ou dynamique).
Je vois quand même un codage dans cette écriture.
Sans le signe moins, un codage naturel est le complément à deux en format fixe.
Par contre, en format dynamique, je ne vois pas trop...
Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».
l article complement a 2 donne pas mal de reseignements
sur la question.
A noter qu il y a des le depart une convention sur le nombre maximal codable
Ça dépend du codage.J'avais mal compris le truc, il met un 1devant en fait: http://villemin.gerard.free.fr/Wwwgv...RE/Negatif.htm
Ca fait donc -6 = 11010.
On ne peut pas, cela dépend du codage qu'il faut connaitre pour interpréter correctement.
Dernière modification par stefjm ; 03/05/2017 à 18h09.
Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».
En complément à la réponse de Stefjm
Un codage sur n bits permet de coder 2^n valeurs distinctes. Tout est possible.
Si on veut respecter l'ordre (l'ordre lexicographique impliquant l'ordre naturel) et coder des entiers successifs, le choix de codage revient à choisir un intervalle de 2^n entiers. Les choix classiques sont [0, 2^n-1], [1, 2^n], [-2^(n-1), 2^(n-1)-1], [-2^(n-1)+1, 2^(n-1)].
Il y a aussi des exemples avec deux codes pour le 0 (le premier bit donne le signe, les n-1 autre le codage de |n| codé sur l'intervalle [0, 2(n-1)-1]. Etc.
Mais rien n'empêche des codages "ésotériques". La spécification la plus générale consiste à coder en binaire le rang, entre 0 et 2^n-1, de la valeur prise dans une liste. Par exemple avec la liste (-1, 0, 1, 2, 5, 10, 100, 10000), codage sur trois bits, le seul code correspondant à un négatif est 000.
--
Par contre
Toute écriture est nécessairement un codage. Mais tout codage n'est pas une "écriture en base x".Je vois quand même un codage dans cette écriture.
Dernière modification par Amanuensis ; 03/05/2017 à 19h07.
Pour toute question, il y a une réponse simple, évidente, et fausse.
Merci pour vos réponses.
Dlzlogic je n'avais pas vu votre réponse, merci.
Quand on dit que les mots sont représentés sur 4 bits, ça signifie quoi ? Que le quatrieme bit est pour le signe ?
Le quatrième bit indique le signe ?
Dans la définition de wiki, il est écrit pour avoir le complément à 2: "On ajoute 1 au résultat (les dépassements sont ignorés).
". Je ne comprends ce que signifie les déplacements sont ignorés ? Mais le probleme c'est que lors d'une somme comme celle du dessous on obtient un nombre à 5 bits.
1011 + 0111 = 10001
On additionne 2 nombres représenté sur 4 bits, 1011 étant la représentation d'un nombre négatif que j'ai obtenu en effectuant la complémentation à 2 de 0101 et ça donne 10001, qui est censé je pense être un résultat négatif mais sur 5 bits, donc la convention c'est quoi ? Quand il y a des nombres négatif dans la partie, lors des opérations, le dernier bit sera toujours pour le signe ?
Tant que que vous ne comprenez pas la différence entre codage et représentation mathématique en base 2 (soulignée d'une manière ou d'une autre par toutes les réponses), vous risquez de poser des questions mal posées, comme dans le message qui précède.
Dernière modification par Amanuensis ; 03/05/2017 à 19h14.
Pour toute question, il y a une réponse simple, évidente, et fausse.
D'accord merci. Mais le truc c'est que je ne pense pas avoir besoin de connaitre cette différence pour mes examens, excusez-moi.
Sur un exercice, il est écrit dans l'énoncé que les mots (d'ailleurs mots je ne sais même pas ce que ça signifie, on parle des nombres j'imagine) sont représentés sur 4 bits, j'imagine que ça indique que le quatrieme est un signe.
Je dois donner le complément à 2 de 0101, qui est 1010 +1 = 1011
Ensuite je dois faire l'addition de 1011 et 0111, j'obtient 10010.
Ca fait en base 10, -(8 - (1 +2)) + (4+2+1) = -5 + 7 = -2
Donc le dernier bit du résultat de la somme représente le signe.
Intéressant... Des examens tels qu'il n'est pas nécessaire de comprendre. Pourquoi pas?
Et pour cause... "Mot" est un terme de codage. Un mot est une des représentations possibles du code. Un code utilisant des mots de 4 bits définit la correspondance entre les 16 mots différents du code et les 16 valeurs qu'ils représentent.(d'ailleurs mots je ne sais même pas ce que ça signifie, on parle des nombres j'imagine)
Non. Comme déjà répété plein de fois, cela dépend du code. C'est vrai pour certains codes, pas pour tous.sont représentés sur 4 bits, j'imagine que ça indique que le quatrieme est un signe.
Le complément à 2 est un code particulier.Je dois donner le complément à 2
Oui. Cela représente donc -5 en codage par complément à 2.de 0101, qui est 1010 +1 = 1011
-5 + 7 = 2, le résultat est représenté par 0010. (La retenue doit être ignorée dans ce cas-là.)Ensuite je dois faire l'addition de 1011 et 0111, j'obtient 10010.
Non (et il n'y a pas besoin dans ce cas de préciser "en base dix", détail)Ca fait en base 10, -(8 - (1 +2)) + (4+2+1) = -5 + 7 = -2
et non.Donc le dernier bit du résultat de la somme représente le signe.
---
Vous mélangez deux codes. L'addition des représentations codées dépend du code. Vous additionnez comme si le code était la représentation binaire mathématique (pour laquelle 1011 encode onze), alors que c'est un code en complément à 2, ça ne marche pas comme ça.
Dernière modification par Amanuensis ; 03/05/2017 à 20h38.
Pour toute question, il y a une réponse simple, évidente, et fausse.
Merci pour vos réponses.
A l'examen, j'aurais des opérations d'arithmétiques dans différentes bases à résoudre, mais pas de question concernant la théorie.
"Ensuite je dois faire l'addition de 1011 et 0111, j'obtient 10010."
"-5 + 7 = 2, le résultat est représenté par 0010. (La retenue doit être ignorée dans ce cas-là.)"
Pourquoi dans ce cas là ? Faut-il que j'additionne les 4ème bits comme ci le 5ème rang était libre mais je ne rempli que le 4ème ?
Pour représenter les nombres négatif en base 2 en mathématiques on met simlement un - au début j'imagine ?
Parce que :
Tu ne disposes que de 4 bits .
Tout ce qui dépasse 4 bits est ignoré .
1011b + 0111b = 11+7=18 =2 =0010b .
J'ai confondu 2 et 18 car on a 16=0 puisqu'on ne code que de 0 à 15 (16 codes possibles sur 4 bits).
Ce qui revient à dire que dans 10010 fait à la main, le 1 initial est perdu.
mais ceci n'est plus du calcul binaire, c'est du calcul sur des registres logiques (en info par exemple). La calcul mathématique binaire est
1011b + 0111b = 10010b .
Cordialement.
C'est malheureusement une tendance dans l'enseignement et ce n'est pas que la faute des étudiants.
L'exemple du complément à deux est assez révélateur.
On fait apprendre une recette de cuisine (inverser bit à bit, ajouter 1) qui mélange chiffre-opération sur bit et nombre-opération arithmétique.
La théorie qu'il y a derrière la recette est enseignée mais n'est pas perçues comme utile ni par les dirigeants qui font les programmes (c'est des maths inutiles pour le plus grand nombre, on doit former des techniciens opérationnels, pas des matheux intello dédicace spéciale à Médiat), ni par certains étudiants qui ne veulent que la note (et comment leur en vouloir s'ils ne sont évalués que sur la recette de cuisine?).
Le plus amusant est que la recette de cuisine ne sert à peu près jamais en terme opérationnel car les outils informatiques font le job. C'est un peu comme les tableau de Karnaugh : plus aucun intérêt opérationnel aujourd'hui, mais intéressant pour l'aspect théorique qui permet de comprendre la logique du truc et le codage binaire réfléchi...
Du coup, pour les étudiants superficiels, faire la différence entre ce qui suit est devenu mission impossible!
0xFFFF=0b1111111111111111=0177 777=65535 : représentations du même nombre en différentes bases (codage en C)
F, 1, 7 : interprété comme chiffres
'F', '1', '7' : caractère de code ASCII 0x46, 0x31, 0x37
"FFFF" : chaine de caractères
Ajouter à cela la transmission ou le stockage de ces informations : big ou little endian
ainsi que la taille des mots
et les pointeurs (*), les adresses de (&) et les contenus de (*)
et vous avez un superbe bouquet explosif! L'erreur la plus courante est alors "incompatibilité de type" lors d'affectation incohérente entre nombre de format différent, caractère, chaine de caractère, adresse et j'en passe!
La façon moderne de travailler est alors d'aller poster son code sur le net, et d'obtenir des réponses du genre : "remplace les "" "" par 0x".
C'était ma minute de matheux intello...
Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».
Pour toute question, il y a une réponse simple, évidente, et fausse.
Bonjour,
J'arrive de l'extérieur et je vais peut-être dire n'importe quoi, mais il a été dit de distinguer le codage et la représentation mathématique en base 2. Outre que par le terme codage on entende parfois aussi tous les problèmes informatiques sous-jacents, la "représentation mathématique en base 2" ne serait-elle pas qu'un exemple de codage ?
On a une série de symboles qu'on utilise avec certaines règles pour représenter des concepts abstraits comme les nombres, qui eux, n'existent que par les propriétés qu'on leur donne. Je me trompe ?
Oui (déjà indiqué, fin du message #8) ; techniquement, c'est un codage de longueur variable avec comme jeu de symboles des caractères.J'arrive de l'extérieur et je vais peut-être dire n'importe quoi, mais il a été dit de distinguer le codage et la représentation mathématique en base 2. Outre que par le terme codage on entende parfois aussi tous les problèmes informatiques sous-jacents, la "représentation mathématique en base 2" ne serait-elle pas qu'un exemple de codage ?
Non, c'est correct.On a une série de symboles qu'on utilise avec certaines règles pour représenter des concepts abstraits comme les nombres, qui eux, n'existent que par les propriétés qu'on leur donne. Je me trompe ?
Pour toute question, il y a une réponse simple, évidente, et fausse.
Une question sur ce "raisonnement" : Pense tu que faire de l'informatique consiste à déposer son cerveau et appliquer des recettes de cuisine sans les comprendre ?D'accord merci. Mais le truc c'est que je ne pense pas avoir besoin de connaitre cette différence pour mes examens, excusez-moi. Sur un exercice, il est écrit dans l'énoncé que les mots (d'ailleurs mots je ne sais même pas ce que ça signifie, on parle des nombres j'imagine) .
Un peu de sérieux !
There are more things in heaven and earth, Horatio, Than are dreamt of in your philosophy.
Merci pour vos réponses.
"1011b + 0111b = 11+7=18 =2 =0010b ."
18 = 2, dés que ça dépasse 16 on fait -16 ?
"Une question sur ce "raisonnement" : Pense tu que faire de l'informatique consiste à déposer son cerveau et appliquer des recettes de cuisine sans les comprendre ?"
Non, mais ici je vais avoir à faire des calculs plutôt que de l'informatique.
J'ai une autre question concernant les divisions euclidiennes dans différentes de base.
Soit la division en base 5 de 4340 par 2, ca commence comme ça:
4340 - 2 * 2000 = 340
340 - 2 * 100 = 140
140 - 2 * 40 = 10
Ici, je me demande si il est possible qu'à la place de 140 il pourrait y avoir 240, et que donc l'unité que je devrais rentré dans la zone réservé au quotient serait 7, le problème serait que 7 n'existe pas en base 5.
Est-ce possible ? Je pense que non.
Bonjour,
Je pense que si j'avais à faire des opérations arithmétique dans une autre base que 10, je commencerais par écrire sur un brouillon les tables de multiplication. En base 10, pour moi, c'est pas la peine, parce que je les connais par cœur.
Oui, parce que vous travaillez sur 4 bits : Le poids du bit n°4 (celui qui dépasse) vaut 2^4=16 (numérotation de 0 à 3 pour 4 bits).
Il faut quand même connaitre le contexte : calcul fait par une machine en format fixe ou calcul fait par un humain en format variable?
Pas la même réponse.
Je n'arrive pas à cerner d'où vous sortez ce 7.J'ai une autre question concernant les divisions euclidiennes dans différentes de base.
Soit la division en base 5 de 4340 par 2, ca commence comme ça:
4340 - 2 * 2000 = 340
340 - 2 * 100 = 140
140 - 2 * 40 = 10
Ici, je me demande si il est possible qu'à la place de 140 il pourrait y avoir 240, et que donc l'unité que je devrais rentré dans la zone réservé au quotient serait 7, le problème serait que 7 n'existe pas en base 5.
Est-ce possible ? Je pense que non.
240 - 2 * 100 = 40
40 - 2* 20 = 0
240/2 = 120 et reste 0.
Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».
Marrant toutes ces interventions qui parlent de base 10.
Pour toute question, il y a une réponse simple, évidente, et fausse.
Merci pour vos réponses.
"Le poids du bit n°4 (celui qui dépasse) vaut 2^4"
Je pensais qu'il valait 2^3, avec 2^0 pour le n°1.
"Il faut quand même connaitre le contexte : calcul fait par une machine en format fixe ou calcul fait par un humain en format variable?
Pas la même réponse."
Par un humain, je ne sais pas ce qu'est un format fixe/variable par contre.
"Je n'arrive pas à cerner d'où vous sortez ce 7."
J'ai fais une erreur.
La question était de savoir, si, lorsque je pose une division euclidienne, je peux avoir à placer un nombre à plusieurs chiffre dans la zone du quotient, alors que je ne suis pas encore arrivé aux unités. Je pense que non mais je demande quand même.
Par exemple si on pouvait avoir un truc au cours de la division comme:
XX - 2 * (nombre à 2 chifffres) = xx123
Normal, c'est dans le titre et cela permet une généralisation de l'écriture.
C'est lourd de préciser la base en énumérant dans l'ordre la liste des symboles utilisés.
D'où l'importance de savoir le format utilisé : signé ou non signé, fixe ou variable.
Pareil que pour une machine : c'est une convention de codage.
En général, en mathématique, l'humain travaille en format variable : Il ne perd pas la retenue éventuelle.
Un petit cours sympa sur le codage des entiers relatifs : http://info-llg.fr/commun-mpsi/pdf/04.nombres.pdf
La réponse à cette question est la même quelle que soit la base utilisée pour faire la division.J'ai fais une erreur.
La question était de savoir, si, lorsque je pose une division euclidienne, je peux avoir à placer un nombre à plusieurs chiffre dans la zone du quotient, alors que je ne suis pas encore arrivé aux unités. Je pense que non mais je demande quand même.
Par exemple si on pouvait avoir un truc au cours de la division comme:
XX - 2 * (nombre à 2 chifffres) = xx123
En base 10 aka (0,1) aka deux
ou 10 aka (0,1,2,3,4) aka cinq
ou 10 aka (0,1,2,3,4,5,6,7,8,9) aka dix
ou 10 aka (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E ,F) aka seize
Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».
binaire dans le titre : base deux, nombre deux qui s'écrit 10.
La base s'écrit 10 {\displaystyle 10} 10 dans toutes les bases.
Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».
C'est la même blague que la fameuse "il y a 10 sortes de gens , ceux qui connaissent le binaire et les autres"