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
正数的补码: 原码;
补码:
负数的补码:其绝对值取反再加一;
例如:“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
相关文章推荐
- signed 和 unsigned 区别
- 计算中unsigned与signed的区别
- unsigned与signed之间的区别;微软试题已知unsigned int i=3;unsigned j;输出j=i*(-1)的结果详解
- C语言 unsigned与signed区别
- C语言中关于char类型存储的分析 以及signed与unsigned的区别
- [VC]signed和unsigned之间区别
- signed unsigned 的区别
- char/unsigned char/signed char之间的区别
- unsigned与signed区别
- unsigned和signed、const和define的区别
- c++需要注意unsigned与signed区别
- c语言中无符号(unsigned)和有符号(signed)的区别
- 【转】mysql 中int类型字段unsigned和signed的区别
- [转] Unsigned VS signed
- signed ,unsigned 关键字
- signed和unsigned之间以及移位操作相关左移和右移
- C语言深度剖析--读书笔记4_signed/unsigned关键字
- c++关于signed和unsigned
- char、signed char、unsigned char的区别总结。
- (C语言)signed和unsigned类型转化