有符号数与无符号数之间的转换理解(做个笔记)
有符号数转为无符号数
有符号数(unsigned)在计算机中经常以补码形式存在。如果按照位级别来理解,一串二进制数在表达上是有符号数还是无符号数,取决于你的需求。
-3 在长度为4的位模式下:
原码 1 0 1 1
反码 1 1 0 0
补码 1 1 0 1
而该补码从无符号数的理解来看则为2³ +2²+1=13
即 -3转为无符号数为13
更简单的理解方式为:-3+16=13
最高位的1在有符号数下表示-8,在无符号数下表示+8,如此就相差了16。
不会用markdowm写公式 用伪代码记录下
@ x 为 有符号数
@ w 为 位模式长度
@T2Uw(x) 为 无符号数
if( x < 0 )
{
T2Uw(x) = x + 2w
}
else
{
T2Uw (x)= x
}