16進位做2補數運算
這個function主要是要做16進位做2補數運算,以binary form的型式表示
例如
表示-16000,做了2了補數運算後並以16進位表示為c180
那我在給個'-'號,即再做一次2補數運算,結果應該要為16000
所以在in='C180';我想用16 bit表示(即N=16)
輸出可得11111010000000,10進位為16000
function out=signed_hex2bin_2(in,N)
InSize=size(in);
%To translate input from hex to dec
in_dec=hex2dec(in);
%To calculate the length of binary bit,
%and then translate input from dec to bin
%The length is decided by the max length compared with seclection and
%the minimum lenth of input binary presentation
bit_len1=4*InSize(2);
bit_len2=N;
if (bit_len1>=bit_len2)
bit_len=bit_len1;
else
bit_len=bit_len2;
end
in_bin=dec2bin(in_dec,bit_len);
%To transfer 2's compleantary in a binary form
%Process 1).To inverse 0->1 , 1->0
% 2).Add 1
%Process 1)
for i=1:length(in_bin)
if (in_bin(i)=='0')
in_bin_inv_b(i)='1';
elseif (in_bin(i)=='1')
in_bin_inv_b(i)='0';
end
end
%Process 2)
in_bin_inv_bd=bin2dec(in_bin_inv_b);
in_bin_inv_bd_p1=in_bin_inv_bd+1; %dec form
in_bin_inv_bdp1b=dec2bin(in_bin_inv_bd_p1); %binary form
%Output seclection : binary form
out=in_bin_inv_bdp1b;
例如
表示-16000,做了2了補數運算後並以16進位表示為c180
那我在給個'-'號,即再做一次2補數運算,結果應該要為16000
所以在in='C180';我想用16 bit表示(即N=16)
輸出可得11111010000000,10進位為16000
function out=signed_hex2bin_2(in,N)
InSize=size(in);
%To translate input from hex to dec
in_dec=hex2dec(in);
%To calculate the length of binary bit,
%and then translate input from dec to bin
%The length is decided by the max length compared with seclection and
%the minimum lenth of input binary presentation
bit_len1=4*InSize(2);
bit_len2=N;
if (bit_len1>=bit_len2)
bit_len=bit_len1;
else
bit_len=bit_len2;
end
in_bin=dec2bin(in_dec,bit_len);
%To transfer 2's compleantary in a binary form
%Process 1).To inverse 0->1 , 1->0
% 2).Add 1
%Process 1)
for i=1:length(in_bin)
if (in_bin(i)=='0')
in_bin_inv_b(i)='1';
elseif (in_bin(i)=='1')
in_bin_inv_b(i)='0';
end
end
%Process 2)
in_bin_inv_bd=bin2dec(in_bin_inv_b);
in_bin_inv_bd_p1=in_bin_inv_bd+1; %dec form
in_bin_inv_bdp1b=dec2bin(in_bin_inv_bd_p1); %binary form
%Output seclection : binary form
out=in_bin_inv_bdp1b;
留言