读书人

有符号整数如何向无符号整数转换

发布时间: 2012-03-15 11:50:38 作者: rapoo

有符号整数怎么向无符号整数转换?
请问有符号整数怎么向无符号整数转换?在机器中二进制情况下是怎么转换的?符号位怎么处理的,是忽略还是当作无符号整数最高位?

[解决办法]
n位无符号整数二进制最高位的权是+2^(n-1) (^在这里表示乘方)
而n位二进制补码的最高位的权是-2^(n-1)
比如n=4,
那么1001按无符号解释是 2^3+1=9,按有符号解释是-2^3+1=-7.
所以,当最高位为0时,转换前和转换后表示的值是一样的,如果最高位是1,那么从无符号转换成有符号,表示的值会向负的方向平移2^n(比如无符号1001转成有符号,表示的值由9变成了9-16=-7.),从有符号转换成无符号,则反过来,

读书人网 >C++

热点推荐