《DSP using MATLAB》Problem 6.24

代码:

%% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%%            Output Info about this m-file
fprintf('\n***********************************************************\n');
fprintf('        <DSP using MATLAB> Problem 6.24 \n\n');

banner();
%% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
D = [1001, -63, -449, 978, -205];

fprintf('\nConvert a Sign-Magnitude Format Decimal integer D to its binary representation B! \n');
fprintf('\n  %5d   binary representation is  :-- %20s --    \n', D(1), sm2bin(D(1)) );
fprintf('\n  %5d   binary representation is  :-- %20s --    \n', D(2), sm2bin(D(2)) );
fprintf('\n  %5d   binary representation is  :-- %20s --    \n', D(3), sm2bin(D(3)) );
fprintf('\n  %5d   binary representation is  :-- %20s --    \n', D(4), sm2bin(D(4)) );
fprintf('\n  %5d   binary representation is  :-- %20s --    \n', D(5), sm2bin(D(5)) );

%B = {'1010', '011011011', '11001', '1010101', '011011'};
%B = char('1010', '011011011', '11001', '1010101', '011011');
%B = ['1010'; '011011011'; '11001'; '1010101'; '011011'];

B1 = '1010';
fprintf('\nConvert a binary representation B to its Sign-Magnitude Format Decimal integer D! \n');
fprintf('\n  --%15s--   Sign-Magn representation is  : %10d     \n', B1, bin2sm(B1) );

B2 = '011011011';
fprintf('\n  --%15s--   Sign-Magn representation is  : %10d     \n', B2, bin2sm(B2) );

B3 = '11001';
fprintf('\n  --%15s--   Sign-Magn representation is  : %10d     \n', B3, bin2sm(B3) );

B4 = '1010101';
fprintf('\n  --%15s--   Sign-Magn representation is  : %10d     \n', B4, bin2sm(B4) );

B5 = '011011';
fprintf('\n  --%15s--   Sign-Magn representation is  : %10d     \n', B5, bin2sm(B5) );

  用到的子函数sm2bin

function B = sm2bin(D);
	% Convert a Sign-Magnitude format Decimal integer D
    % to its binary representation  B
	% ----------------------------------------------------------
	%  B = sm2bin(D)
    %  D = sign-magnitude format decimal integer 
	%  B = binary representation 
	% 
    %
    
    s = sign(D);                  % sign of D (-1 if x<0,  0 if x=0, 1 if x>0)
    sb = (s < 0);                 % sign-bit  (0 if x>=0, 1 if x<0)
    B = strcat( num2str(sb), dec2bin( abs(D) ) );

  另一个子函数bin2sm

function D = bin2sm(B);
	% Convert a binary representation B to its 
    %   Sign-Magnitude format Decimal integer D
	% ----------------------------------------------------------
	%  D = bin2sm(B)
    %  D = sign-magnitude format decimal integer 
	%  B = binary representation 
	% 
    %
    %B = num2str(B)
    sb = str2num( B(1) );                            % sign-bit  (0 if x>=0, 1 if x<0)
    
    if sb == 0
        D = (1-sb) * bin2dec( B(2:length(B)) );    % or D = bin2dec( B(2:1:length(B)) )
    elseif sb == 1
        D = -bin2dec( B(2:length(B)) );
    end

  运行结果:

          第6章的习题我就做到这里了,剩下的不会,以后开始第7章。

猜你喜欢

转载自www.cnblogs.com/ky027wh-sx/p/10291752.html