if N is the number of bit
and b an array of integer to convert in signed this operation could be faster
if( b(n) > (2^(N-1)-1))
b(n)=b(n)-2^N;
else
b(n)=b(n);
end;
function value = dec2tc(dec, N)
value = dec2bin(mod((dec),2^N),N);
end
function value = tc2dec(bin,N)
val = bin2dec(bin);
y = sign(2^(N-1)-val)*(2^(N-1)-abs(2^(N-1)-val));
if ((y == 0) && (val ~= 0))
value = -val;
else
value = y;
end
end
there is a easier way to calculate the two's complement:
twos_comp = dec2bin(mod((value),2^bits),bits);
look at a those two's complement circles then you will see why it works.
Handy for 16 bit numbers, but not anything else. It even takes an input for what appears to be the number of bits (i.e. other than 16), but never utilizes it. Good start on a function that could be far more useful.
Comment only