在处理一个很大的数组的时候,需要使用matlab将该数组中的全部元素取补码后转化成16进制。
原码取补码的最传统的方法是:正数不变,负数按位取反(最高位符号位不取反),然后加1;
当然还有另一种方法:正数不变,负数则将其加上模值。其中的模的大小等于2的n次方(n为表示位数,含符号位)。举例来说:用四位表示的-3,其补码就等于模值16加上-3,等于13。
于是我就用第二种方法的思路写了下面一段代码:
function hexval=Compldec2hex(decval)
if(decval>=0)
res = decval;
else
res