Δημοσιεύτηκε: 29 Αύγ 2011, 20:44
από Garrus
migf1 έγραψε:
Garrus έγραψε:How about bits required to store represent the number?

Αν δεν θέλουμε να δείχνουμε και την τιμή του κάθε bit, τότε το παραπάνω είναι πολύ απλό:
Κώδικας: Επιλογή όλων

int nbits( int n )
{
return 8 * sizeof( n );
}

Δεν εννοουσα ποσα bits πιανει στη μνημη , αφου υπαρχει η sizeof() - οποτε καθε ακεραιος θα πιανει sizeof(int), αλλα ποσα δηφια οπως λεει και ο Konn χρειαζονται για την δυαδικη αναπαρασταση του.
Πχ, μια κακη υλοποιηση:

Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#include "math.h"

int main (int argc,char * argv[]) {
if(argc!=2){
printf("Command line argument required. Non negative integer.\n");
exit(1);
}
int x = atoi(argv[1]);
int n;
if(!x) n=1;
else{
n = ceil(log(x) / log(2));
if(x%2==0 || x<=1) n++;
}
printf(" %d bits required to represent %d\n",n,x);

return 0;
}


Κώδικας: Επιλογή όλων

$ ./bits 1
1 bit(s) required to represent 1
$ ./bits 256
9 bit(s) required to represent 256
$ ./bits 37
6 bit(s) required to represent 37
$ ./bits 1023
10 bit(s) required to represent 1023