|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Feb 2008
Messaggi: 5
|
help! contatore in binario
ciao a tutti,
ho bisogno di realizzare un modulo in linguaggio C che funzioni come un contatore binario a 32 bit. Mi servono le stringhe di '01010101.......' da 32 bit che tale contatore dovrebbe produrre per poi usarle in un trasferimento che usa le socket. Fare un contatore decimale è facilissimo...basta fare un ciclo for... ma per farlo in binario come faccio?? potete darmi un suggerimento o un esempio? Grazie mille. |
|
|
|
|
|
#2 | |
|
Member
Iscritto dal: Feb 2006
Messaggi: 134
|
Quote:
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
non ho ben capito cosa devi contare ...
Puoi essere più specifico?
__________________
GPU Compiler Engineer |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Feb 2008
Messaggi: 5
|
cioè mi serve un codice C che mi generi tutte stringhe di bit di 32 caratteri in ordine crescente come fosse un contatore:
'00000000000000000000000000000000' '00000000000000000000000000000001' '00000000000000000000000000000010' ......
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
|
Scusa non puoi prendere il valore del contatore e convertirlo in binario con le funzioni di libreria quando devi utilizzarlo?
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization. --Gerald Weinberg |
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Feb 2008
Messaggi: 5
|
che funzione di conversione, e che libreria posso usare?
cioe faccio for(i=0;i<tot;i++) printf("%d", i); e poi converti(i)... la funzione 'converti' dove la trovo? |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
itoa (int value, char * str, int base );
Ma non ricordo se e' del C++ o se c'e' anche nel C
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Prova questa funzione (incrementstr32) .
Ecco il programmino di esempio : Codice:
#include <stdio.h>
#include <string.h>
void incrementstr32(char* str);
int main() {
char str[] = "00000000000000000000000000000000";
int i;
printf("%s\n", str);
for (i = 0; i < 1000000000; i++)
{
incrementstr32(str);
printf("%s\n", str);
}
}
void incrementstr32(char* str)
{
int counter = 0;
if (strlen(str) != 32)
return;
for ( counter = 31; counter >= 0; counter-- ) {
if ( str[counter] == '0')
{
str[counter] = '1';
counter = -1;
}
else
{
str[counter] = '0';
}
}
}
Gli dai in pasto la stringa di partenza e lui la incrementa di 1 . la stringa deve essere lunga 32 caratteri Ciao EDIT: Ti consiglio di abbassare un po' il valore di comparazione del primo for del main se non vuoi andare avanti ore
__________________
GPU Compiler Engineer Ultima modifica di AnonimoVeneziano : 11-02-2008 alle 16:04. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Ah, cambia il nome del thread mettendo il nome del linguaggio tra parentesi (ad esempio "[C]help! contatore in binario" ) altrimenti te lo chiudono
Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
|
#10 |
|
Junior Member
Iscritto dal: Feb 2008
Messaggi: 5
|
grazie!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:47.




















