unsigned 和 signed之间的转换关系
(2012-07-05 15:19:47)
标签:
it |
在定义整数变量的型态的时候可以加上
unsigned char
unsigned short (int)
unsigned long (int)
unsigned int
----------
signed char
signed short (int)
signed long (int)
signed int
--------------
上面
加上
1.
2.
不一样的地方有下面几个
1.
2.
2.
小结:
以下均针对VC++6.0编译器
1、
char c = 0x90 (1001 0000)首位是1
c >>= 4
c = 0xF9
char c =
0x70 (0111
0000)
c >>= 4
c = 0x07
char c = 0x90 (1001 0000)与首位无关
c <<= 4
c = 0x00
char c =
0x70 (0111 0000)
c <<= 4
c = 0x00
2、
int I = 0xF0 00 11 11 (11110000 00000000 00010001 00010001)首位1
I >>= 4
I = 0xFF 00 01 11
int I = 0x00 00 11 11 (00000000 00000000 00010001 00010001)首位0
I >> 4
I = 0x00 00 01 11
unsigned int I = 0xF0 00 11 11 (11110000 00000000 00010001 00010001)与首位无关
I << 4
I = 0x00 01 11 10
unsigned int I = 0x00 00 11 11 (00000000 00000000 00010001 00010001)与首位无关
I << 4
I = 0x00 01 11 10
3、
char c = 0x90 (首位是1)
int I = 0
I = c
I = 0xFF FF FF 90
char c = 0x70 (首位是0)
int I = 0
I = c
I = 0x00 00 00 70
4、
char c = 0x90 (首位是1)
unsigned int I = 0
I = c
I = 0xFF FF FF 90
char c = 0x70 (首位是0)
unsigned int I = 0
I = c
I = 0x00 00 00 70
5、
unsigned char c = 0x90 (与首位无关)
int I = 0
I = c
I = 0x00 00 00 90
unsigned char c = 0x70 (与首位无关)
int I = 0
I = c
I = 0x00 00 00 70
6、
unsigned char c = 0x90 (与首位无关)
int I = 0
I = c
I = 0x00 00 00 90
unsigned char c = 0x70 (与首位无关)
int I = 0
I = c
I = 0x00 00 00 70
总结:unsigned(无符号)不管左移,还是右移,均补0;signed(有符号)左移补0,右移补(如果首位是1,补1;首位是0,补0)。