|
|
|
![]() |
|
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 15: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: 03:30.