您的位置:首页 > 其它

unsigned 和 signed 的区别

2012-08-17 15:41 316 查看
在计算机系统了,unsigned 表示无符号数, signed 表示有符号。在数值作存储时,都是采用起补码进行存储的,最高位为0是正数,最高位为1是负数。

正数的补码: 原码;

补码:

负数的补码:其绝对值取反再加一;

例如:“char 8位

unsigned char 其值的范围是(0 ~ 2^8-1 )
signed char 其值的范围是(-2^7 ~ 2^7 -1)

对于unsigned char

| 1111_1111 -> 255 0xff
<- |

| 1111_1110 -> 254 0xfe |

| ...................................................... |

| 0000_0001 -> 1 0x01 |

|-> 0000_0000 -> 0 0x00 |

对于signed char

| 0111_1111 -> 127 0x7f <-|

....................................................

| 0000_0001 -> 1 0x01 |

| 0000_0000 -> 0 0x00 |

...................................................

| 1111_1111 ->-1 0xff |

..................................................

| 1000_0001 ->-127 0x81 |

| -> 1000_0000 ->-128 0x80 |

有这么一道面试题

int main()

{

signed char a[1000];

int i;

for(i = 0; i<1000; i++)

{

a[i] = -1 -i;

}

printf("%d",strlen(a));

return 0 ;

}

按上面的分析就为 255
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: