begin process at 2012 02 10 22:54:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

Bitwise...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Bitwise...

lundi 23 décembre 2002 à 22:07:57 | Bitwise...

MeltedMind

Wise ou not wise là est la question.

Je me demandais... sur le fonctionnement primaire de nos petites machines. 1+ 1 = 10, c'est bien connu mais comment c'est compet avec les opérateurs bit-wises (and, or, not, xor) qui sont fondamentalement toutes les opérations que peuvent faire notre ordi.

Je me souviens par exemple que notre ordinateur pour arriver a soustraire un nombre d'un autre nombre fait une addition:

Reponse = ~(~Nombre1 + Nombre2) ;

essayez ça fonctionne très bien
<pre>
#include "stdio.h"
void OutBinairy(int Val);
int main(int argc, char* argv[])
{
int n1 = 43;
int n2 = -43;
int rep = ~(~n1+n2);
printf("\n");
OutBinairy(n1);
printf("\n");
OutBinairy(n2);
printf("\n");
OutBinairy(rep);
printf("\n");
printf("%d - %d = %d\n",n1,n2,rep);

return 0;
}
void OutBinairy(int Val)
{
for(int i=16-1;i>=0;i--)
if((Val>>i)&0x1)
printf("1");
else
printf("0");
}
</pre>
Bon ici j'essaie avec 43 et -43 pas beaucoup de rigueure mais c'est juste pour que vous voyez que 43 = ~43+1 en format binaire.

Alors ce que je cherche c'est comment ont fait l'addition sans se servir du + (et évidement encore moins du -) ce qui je l'avoue me mystifie. Je suis capable de le faire étape par étape, mais alors c'est une boucle à moins que j'aie une lookup table aussi grande que sizeof(type_a_adittionner)²

Pourtant bien des processeur font a+b en un coup de clock.
(ensuite se sera de trouver comment les DSP font leurs multiplications en un coup de clock:-)

MeltedMind
[...]selon laquelle notre plus grosse erreur avait été de descendre des arbres.
lundi 30 décembre 2002 à 15:49:09 | Re : Bitwise...

zul

pour l'addition de base
+ 0 1
0 0 1
1 1 10

Le chiffre est obtenu par un xor et la retenue par un et. (voir half-adder ou full-adder sur le net). pour un nb binaire, je sais pas exactement comment il decompose chaque bit (un mask avec et 000 ... 1 0000 avec 1 placé en i position puis op en parralèle ???)

Pour la division euh bin c une addition par l'opposé je dirai. Mais je suis pas sur. fo ke je verifie.



-------------------------------
Réponse au message :
-------------------------------

> Wise ou not wise là est la question.
>
> Je me demandais... sur le fonctionnement primaire de nos petites machines. 1+ 1 = 10, c'est bien connu mais comment c'est compet avec les opérateurs bit-wises (and, or, not, xor) qui sont fondamentalement toutes les opérations que peuvent faire notre ordi.
>
> Je me souviens par exemple que notre ordinateur pour arriver a soustraire un nombre d'un autre nombre fait une addition:
>
> Reponse = ~(~Nombre1 + Nombre2) ;
>
> essayez ça fonctionne très bien
> <pre>
> #include "stdio.h"
> void OutBinairy(int Val);
> int main(int argc, char* argv[])
> {
> int n1 = 43;
> int n2 = -43;
> int rep = ~(~n1+n2);
> printf("\n");
> OutBinairy(n1);
> printf("\n");
> OutBinairy(n2);
> printf("\n");
> OutBinairy(rep);
> printf("\n");
> printf("%d - %d = %d\n",n1,n2,rep);
>
> return 0;
> }
> void OutBinairy(int Val)
> {
> for(int i=16-1;i>=0;i--)
> if((Val>>i)&0x1)
> printf("1");
> else
> printf("0");
> }
> </pre>
> Bon ici j'essaie avec 43 et -43 pas beaucoup de rigueure mais c'est juste pour que vous voyez que 43 = ~43+1 en format binaire.
>
> Alors ce que je cherche c'est comment ont fait l'addition sans se servir du + (et évidement encore moins du -) ce qui je l'avoue me mystifie. Je suis capable de le faire étape par étape, mais alors c'est une boucle à moins que j'aie une lookup table aussi grande que sizeof(type_a_adittionner)²
>
> Pourtant bien des processeur font a+b en un coup de clock.
> (ensuite se sera de trouver comment les DSP font leurs multiplications en un coup de clock:-)
>
> MeltedMind
> [...]selon laquelle notre plus grosse erreur avait été de descendre des arbres.
lundi 6 janvier 2003 à 17:38:31 | Re : Bitwise...

MeltedMind

Merci beaucoup, donc si j'ai bien compris, l'adition se fait forcément bit par bit, il n'y a pas de recette magique, c'est le hard-ware lui même qui permet de le faire en un coup de clock!

Encore merci. C'est des notions de bases vraiement intéressante.


MeltedMind

-------------------------------
Réponse au message :
-------------------------------

> pour l'addition de base
> + 0 1
> 0 0 1
> 1 1 10
>
> Le chiffre est obtenu par un xor et la retenue par un et. (voir half-adder ou full-adder sur le net). pour un nb binaire, je sais pas exactement comment il decompose chaque bit (un mask avec et 000 ... 1 0000 avec 1 placé en i position puis op en parralèle ???)
>
> Pour la division euh bin c une addition par l'opposé je dirai. Mais je suis pas sur. fo ke je verifie.
lundi 6 janvier 2003 à 19:01:26 | Re : Bitwise...

zul

oui l'important a noter que j'ai oublié de dire la premiere fois
que les données ne sont pas de n'importe quelles tailles mais tjs codé sur 16 , 32 ou 64 bits.(dependant de la machine).
Il est a noter que le half adder (description precedente) n'est pas la seule architecture possible. Il existe en effet de nombreux autre algorithme qui permettent d'ameliorer la propagation de la retenue voir meme de zapper la propagation de la retenue. je mettrai des liens si ca t'interesse.

ZUL



-------------------------------
Réponse au message :
-------------------------------

> Merci beaucoup, donc si j'ai bien compris, l'adition se fait forcément bit par bit, il n'y a pas de recette magique, c'est le hard-ware lui même qui permet de le faire en un coup de clock!
>
> Encore merci. C'est des notions de bases vraiement intéressante.
>
>
> MeltedMind
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > pour l'addition de base
> > + 0 1
> > 0 0 1
> > 1 1 10
> >
> > Le chiffre est obtenu par un xor et la retenue par un et. (voir half-adder ou full-adder sur le net). pour un nb binaire, je sais pas exactement comment il decompose chaque bit (un mask avec et 000 ... 1 0000 avec 1 placé en i position puis op en parralèle ???)
> >
> > Pour la division euh bin c une addition par l'opposé je dirai. Mais je suis pas sur. fo ke je verifie.
>


Cette discussion est classée dans : int, printf, n1, n2, outbinairy


Répondre à ce message

Sujets en rapport avec ce message

multiplication de 2 vecteurs vers marices C++ [ par cadet1401 ] voila j'essaye de réaliser un programme dans lequel je multiplie 2 vecteurs et dont le resultat doit etre affiché dans une matrice.voici mon code sour besoin d'aide pour corrigé mon exercice [ par darktn ] Salut Tout le monde , j'ai quelque bug dans ce programme besoin d'aide , Le But De faire une deuxième matrice contient les Caractère qui ce trouve dan probleme d'allocation d'une matrice [ par emomar ] salut à tous voila j'ai un probleme avec la fonction remplir voila le code si quelqu'un peut m'aider merci code : [code=cpp]#include #include int n Probleme : Sudoku en C [ par seth59222 ] Bonsoir, voila je suis actuellement en première année d'info, donc assez novice et je viens de créer ce petit bout de programme en C qui consiste a ré Besoin d'aide-Interface Graphique [ par nissan1 ] Bonjour, s'il vous plait je suis debutant en programmation et j'ai fait un programme en C sous l'IDE codeblocks, qui utilise les elements d'une matri jeux mode console en c [ par fifiprog ] Bonsoir a tous je dois creer un jeux sur un damier 10x10 ou tout d'abord deux joueurs pourrons s'affronter c'est le jeux des loups et agneau le but es rectification dune code C et/ou aide sur l'algorithme [ par negets ] bonjour, besoin d'aide; j'aimerai dégager l'algorithme de ce code afin de le programmer sous matlab je connais plus rien en C et C++(je commence à lir appel de fonction [ par ibnjabal ] Bonjour j'essaie de faire une fonction qui calcule la somme de deux matrice et ça fonctionne bien mais seulement c'est quand j'essaie de le faire dans besoin d aide pour les opérations sur les matrices [ par mbasse ] bonjour voici mon programme sur les addition la soustraction la multiplication et le recherche de déterminant sur les matrices. Tjrs lors que je compi position POINT et tableau 2 dimension [ par sokotanic ] bonjour à t.l.m. je souhaite recuperer la position x et y de la souris et la mettre dans un tableau 2 dimensions et afficher cette position dans un p


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales