binary process, biner to decimal

3 vues (au cours des 30 derniers jours)
Internazionale
Internazionale le 21 Mar 2013
i have binary number 20 bit (uint8), i want to convert the binary number to decimal. i use bin2dec but before i must convert num2str so i can use bin2dec. 20 bit (1x20) --> num2str --> 1x58 char. when i start to dec2bin, matlab error because binary string must be 52 bits or less. how to overcome this problem ?
  1 commentaire
Jan
Jan le 21 Mar 2013
The text description of the input is in general less exact as a shart Matlab example. What exactly is "a binary number 20 bit (uint8)? Is this a [1 x 20] uint8 vector, or a [1 x 3] uint8 vector with 4 unused bits?

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 21 Mar 2013
b = uint8([1 1 0 0 1 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1]);
bin2dec( char(b + '0') )
  2 commentaires
Internazionale
Internazionale le 21 Mar 2013
it works, can you describe to me how it works ? especially when bin2dec (char(b+'0')), thanks
Walter Roberson
Walter Roberson le 22 Mar 2013
'0' is the character representation of zero. add 0 (the number) to it and you will have a value that is still the value for the character representation of '0'. Use char() to turn the value back into the character. So char(0 + '0') is going to be '0'.
Now, the character representation of '1' has a value that is exactly 1 greater than the value for the character representation '0'. ('1' - '0') is 1. So char(1 + '0') = '1'.
Therefore to turn 0 or 1 into '0' or '1', add '0' to the value and take char() of the result.

Connectez-vous pour commenter.

Plus de réponses (1)

Jan
Jan le 21 Mar 2013
Modifié(e) : Jan le 21 Mar 2013
Guessing that your input is e.g.:
b = uint8([1 1 0 0 1 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1]);
Then assuming, that the 1st element is the most significant bit:
d = 2 .^ (length(b)-1:-1:0) * double(b(:));
This is the dot-product of an [1xN] and [Nx1] vector, such that the sum is calculated implicitly.
  1 commentaire
Internazionale
Internazionale le 21 Mar 2013
and the output decimal ?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Data Type Conversion dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by