赞
踩
C语言中定点整数用“补码”存储的
1、有符号和无符号数相互转换,不改变数据,只改变解释方式。
short x = -4321 // short两个字节
这里的x的补码为:1110 1111 0001 1111
unsigned short y = (unsigned short)x;
而此时y的值就为:61215
2、长整型变为短整型的数,高位截断,保留低位
int a = 165537, b = -34991; // int 占四个字节
a: 0x000286a1 c:0xffff7751
short c=(short)a, d = (short)b;
转为short需要截断16个bit的高位数据。
a:0x86a1 d:0x7751
3、短整数变长整数,符号扩展(无符号扩展为“0”)
short x=-4321
x:0xef1f
x:1110 1111 0001 1111
int m=x;
m:1111 1111 1111 1111 1110 1111 0001 1111
unsigned short n = (unsigned short)x;
n:1110 1111 0001 1111
unsigned int p =n;
p:0000 0000 0000 0000 1110 1111 0001 1111
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。