背景知识:
一般来说,有符号数值使用补码表示,无符号的数值使用原码来表示。
直接将二进制补码转化为十进制
补码的首位是符号位,如果为1则为负,所以-1 * 2^w为表示的数值。
例如:-3二进制补码1101
直接将补码转化为十进制:
-1 *2^3 + 1 * 2^2 + 0 * 2 ^ 1 +1 * 2^0
有符号数值转化为无符号数值
首先有符号数值使用补码表示,例如,-3的补码1101。将有符号数值改变为无符号数值,不会将二进制数更改,我们改变对二进制位的解释。比如-3,表示时使用补码是1101,我们将1101当作原码来读,1101表示13,也就是说-3变为无符号数值之后,变为13。
无符号数值转化位有符号数值
其实和上一个相似,过程相反。无符号数值一般使用原码进行表示,比如13二进制1101,有符号数值一般使用补码表示,所以我们将13的二进制的原码当作补码读取-3。