binary process, biner to decimal

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

0 votes

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

0 votes

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.

Catégories

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by