|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8896
|
Quote:
perchè se usi anche un array alla fine non lo puoi caricare nei registri mentre il numero si ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#22 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
In assembly sarebbe chiaramente moooolto più facile.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#23 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8896
|
Quote:
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#24 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Non so se conosci l'assembly x86. Questa è una somma su 96 bit in precisione multipla: Codice:
MOV EAX,[ESI+0] ADD [EDI+0],EAX MOV EAX,[ESI+4] ADC [EDI+4],EAX MOV EAX,[ESI+8] ADC [EDI+8],EAX Prova a scriverla in "C" puro.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#25 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8896
|
Quote:
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#26 | |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Quote:
Codice:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define ADD_SIZE (96/32)
void main(void)
{
unsigned long op1[ADD_SIZE],op2[ADD_SIZE],op3[ADD_SIZE];
int i,c;
time_t t;
srand((unsigned)time(&t));
printf(" ");
for(i=ADD_SIZE-1;i>=0;i--)
{
op1[i]=rand();
op1[i]*=op1[i]*op1[i];
printf("%.8X",op1[i]);
}
printf(" +\n ");
for(i=ADD_SIZE-1;i>=0;i--)
{
op2[i]=rand();
op2[i]*=op2[i]*op2[i];
printf("%.8X",op2[i]);
}
printf(" =\n"-);
for(i=0;i<ADD_SIZE;i++)
printf("--------");
printf("\n");
for(c=i=0;i<ADD_SIZE;i++)
{
op3[i]=op2[i]+op1[i]+c;
if(((op3[i]-c)<op2[i])||((op3[i]-c)<op1[i]))
c=1;
else
c=0;
}
printf("%.1X",c);
for(i=ADD_SIZE-1;i>=0;i--)
printf("%.8X",op3[i]);
}
Ultima modifica di repne scasb : 22-07-2006 alle 16:19. |
|
|
|
|
|
|
#27 | |
|
Senior Member
Iscritto dal: May 2000
Messaggi: 1459
|
Quote:
anche a me ai suoi tempi hanno fatto questo quesito (con la differenza che i numeri potevano avere un numero di cifre indefinito) e la richiesta era di risolverlo espressamente in quel modo ciauz |
|
|
|
|
|
|
#28 | |
|
Senior Member
Iscritto dal: May 2000
Messaggi: 1459
|
Quote:
|
|
|
|
|
|
|
#29 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1059
|
bisognerebbe fare qualche piccola(
#include <iostream> #include <conio.h> #include <cstdlib> #define P 20 using namespace std; char s1[P], s2[P]; int n1[P], n2[P], n3[P]; main(){ cout <<"Inserire il primo numero\n--> "; gets(s1); cout <<"\n\nInserire il secondo numero\n--> "; gets(s2); int l = strlen(s1), j=0; for(int i=(P-l); i<P; i++){ n1[i] = s1[j]-48; n2[i] = s2[j]-48; j++;} for(int i=(P-1); i>1; i--){ if(n1[i]+n2[i]>10){ n3[i] = (n1[i]+n2[i])-10; n1[i-1] += 1; } else n3[i] = n1[i]+n2[i];} cout <<"risultato: "; for(int i=0; i<P; i++) cout <<n3[i]; cout <<"\n\n"; system("pause"); } ciao ciao Ultima modifica di Energy++ : 23-07-2006 alle 10:24. |
|
|
|
|
|
#30 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Dati 2 valori a 96 bit (li scrivo in base 16): 00000000 FFFFFFFF FFFFFFFF + 00000000 00000000 00000001 La tua funzione produce il risultato: 00000000 00000000 00000000 mentre invece il risultato corretto è: 00000001 00000000 00000000
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#31 | |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Quote:
Codice:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define ADD_SIZE (96/32)
void main(void)
{
unsigned long op1[ADD_SIZE],op2[ADD_SIZE],op3[ADD_SIZE];
int i,c;
time_t t;
srand((unsigned)time(&t));
printf(" ");
for(i=ADD_SIZE-1;i>=0;i--)
{
op1[i]=rand();
op1[i]*=op1[i]*op1[i];
printf("%.8X",op1[i]);
}
printf(" +\n ");
for(i=ADD_SIZE-1;i>=0;i--)
{
op2[i]=rand();
op2[i]*=op2[i]*op2[i];
printf("%.8X",op2[i]);
}
printf(" =\n-");
for(i=0;i<ADD_SIZE;i++)
printf("--------");
printf("\n");
for(c=i=0;i<ADD_SIZE;i++)
{
op3[i]=op2[i]+op1[i]+c;
if((op3[i]-c)>op3[i])
c=1;
else
{
if(((op3[i]-c)<op2[i])||((op3[i]-c)<op1[i]))
c=1;
else
c=0;
}
}
printf("%.1X",c);
for(i=ADD_SIZE-1;i>=0;i--)
printf("%.8X",op3[i]);
}
Ultima modifica di repne scasb : 23-07-2006 alle 11:23. |
|
|
|
|
|
|
#32 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
00000000 FFFFFFFF FFFFFFFF + 00000000 FFFFFFFF 00000001 ----------------------------- 00000001 FFFFFFFF 00000000 La tua funzione produce: 00000000 FFFFFFFF 00000000
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#33 |
|
Senior Member
Iscritto dal: May 2004
Messaggi: 2691
|
ciao, scusate per il ritardo, l'idea dei 96 bit potrebbe essere buona.. ma il mio prof non la appezzerebbe xké appunto mi ha datoil tutto apposta per farmi lavorare conlestringhe..
in questi giorni con l'aiuto di un mio amico siamo riusciti a fare quasi tutto, seguendo li spunti che mi dette Marinelli. tuttavia il problema principale arriva quando si fa la sottrazione carattere x carattere mettiamo che ad esempio si voglia fare 123 meno 4 sarebbe necessario che il programma legga i due numeri come 123 meno 004 e non come 123 meno 400 il problema infatti e' far partire ilprogramma a fare la sottrazione dall'ultima cifra e non dalla prima.. te hai consigli per fare ciò? viceversa avevamo pensato di fare leggere al programma 123 come 00000000000000000123 meno 00000000000000000003 ossia aggiungendo all'inizio del numero tanti zeri quanti sono le cifre mancanti per arrivare a 20. ma come fare questo? una volta che si hanno i due numeri a 20 cifre complete si pensava di fargli fare una sottrazione tra prima cifra da sinistra del primo numero e prima cifra da sinistra del secondo numero. e che quindi controllasse che: se la cifra del primo numero e' maggiore o uguale aquella del secondo faccia la semplice sottrazione tra due numeri e la memorizzi se invece la cifra del primo numero è minore di quella del secondo consideri la prima cifra con l'aggiunta di 10, quindi faccia la normale sottrazione e scali il risultato dell' operazione delle due cifre precedenti di uno. ci sono modi più rapidi? grazie mille ciao Andrea |
|
|
|
|
|
#34 | |
|
Senior Member
Iscritto dal: May 2004
Messaggi: 2691
|
Quote:
grazie provo alavorare anche su questo ciao Andrea |
|
|
|
|
|
|
#35 |
|
Member
Iscritto dal: Apr 2004
Messaggi: 130
|
Relativamente ai 96 bit, non si potrebbero utilizzare i long long per le somme intermedie, es.:
Codice:
for (c = i = 0; i < ADD_SIZE; i++) {
unsigned long long tmp = (unsigned long long)op2[i] + op1[i] + c;
c = (tmp > ULONG_MAX);
op3[i] = (unsigned long)tmp;
}
|
|
|
|
|
|
#36 |
|
Senior Member
Iscritto dal: Aug 2004
Messaggi: 311
|
Codice:
Sub aaa() a$ = "10000000000000000000" b$ = "00000000000000000001" c$ = "00000000000000000000" ir = 0 For i = Len(a$) To 1 Step -1 ci = Val(Mid$(a$, i, 1)) + ir - Val(Mid$(b$, i, 1)) ir = (ci < 0) ci = ci - ir * 10 Mid$(c$, i, 1) = Format$(ci) Next i End Sub
__________________
Senior Member Registrato il: Jan 2001 Messaggi: 2609 |
|
|
|
|
|
#37 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8896
|
minchia da quanto tempo a
ma dove eri finito? ci mancava il vb ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#38 |
|
Senior Member
Iscritto dal: Aug 2004
Messaggi: 311
|
__________________
Senior Member Registrato il: Jan 2001 Messaggi: 2609 |
|
|
|
|
|
#39 |
|
Senior Member
Iscritto dal: Aug 2004
Messaggi: 311
|
__________________
Senior Member Registrato il: Jan 2001 Messaggi: 2609 |
|
|
|
|
|
#40 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8896
|
Quote:
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:58.



















