char 与 unsigned char的区别

转载 2015年07月09日 17:18:52
在数据类型转换时有区别:
如果是char,系统认为最高位是符号位,那么将对最高位进行拓展
如果是unsigned char,系统认为没有符号位,不会对最高位拓展。
    对最高位拓展是什么意思呢?char在C里占一个字节,比如0x80的一个char,二进制为1000 0000,如果转为int则,认为最高位的1是符号位,int是4个字节,剩下的3个怎么办呢,肯定得填充了,系统会在前面填充。如果最高位是符号位,那么系统会在前面填充3个字节的符号位(这和计算机里头数值用补码表示有关,比如0x80的一个char,1000 0000,表示-128,转为int类型时,我们还是希望是-128,此时系统会在前三个字节里全部填充符号位1,变成1111 1111,1111 1111,1111 1111,1000 000。这个数在计算机里还是表示-128。
    如果一个0x80的unsigned char,二进制也是1000 0000,由于是无符号型(只能表示正数),系统认为该数最高位不是符号是数,所以系统认为所表示的值是128,若转为int型,系统会在前三个字节填充0,变成
0000 0000,0000 0000,0000 0000,1000 000。这个数在计算机int里还是表示128。

注意:赋给unsigned int也会扩展。

相关文章推荐

char 与 unsigned char的本质区别

char 与 unsigned char的本质区别 在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在...

char 与 unsigned char的本质区别

在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别  首先在内存中,char与unsigned char没有什么...

unsigned char和signed char型变量的区别,赋值后它在内存中的存储形式

原文链接:点击打开链接 在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别  ...

char 与 unsigned char的本质区别

char 与 unsigned char的本质区别 在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 ...

char与unsigned char本质区别

在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别。 首先在内存中,char与unsigned char没有什么...

char 与 unsigned char的本质区别

http://www.cnblogs.com/qytan36/archive/2010/09/27/1836569.html 在C中,默认的基础数据类型均为signed,现在我们以char为...

char 与 unsigned char的本质区别

char 与 unsigned char的本质区别 在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 ...

【转】vC++中 char 与 unsigned char(BYTE)的具体区别

http://zhongliyuan88.blog.163.com/blog/static/793788192008923113528787/ vC++中 char 与 unsigned char(B...
  • qp314
  • qp314
  • 2011-04-15 12:10
  • 5146

vC++中 char 与 unsigned char(BYTE)的具体区别?

vC++中 char 与 unsigned char(BYTE)的具体区别? 2008-10-23 11:35:28| 分类: 理论知识 | 标签: |字号大中小 订阅 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)