binary process, biner to decimal

3 Ansichten (letzte 30 Tage)
Internazionale
Internazionale am 21 Mär. 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 Kommentar
Jan
Jan am 21 Mär. 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?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 21 Mär. 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 Kommentare
Internazionale
Internazionale am 21 Mär. 2013
it works, can you describe to me how it works ? especially when bin2dec (char(b+'0')), thanks
Walter Roberson
Walter Roberson am 22 Mär. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jan
Jan am 21 Mär. 2013
Bearbeitet: Jan am 21 Mär. 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.

Kategorien

Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by