unsigned char 和 signed char 区别
unsigned char 和 signed char 区别:
signed char取值范围是 -128 到 127unsigned char 取值范围是 0 到 255
ANSI C 提ANSI C 提供了3种字符类型,分别是char、signed char、unsigned charchar相当于signed char或者unsigned char,但是这取决于编译器!这三种字符类型都是按照1个字节存储的,可以保存256个不同的值。不同的是取值范围signed char取值范围是 -128 到 127unsigned char 取值范围是 0 到 255signed char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255。但是char究竟相当于signed char呢还是相当于unsigned char呢??这就是char和int的不同之处!int==signed int,但是char不能简单以为==signed char要确定char究竟等同什么要基于不同的编译器做测试大多数机器使用补码来存储整数,在这些机器中按照整数类型存储的-1的所有位均是1假设我的机器也是如此存储,就能据此判断char究竟是等于signed char还是unsigned char在实际使用过程种有什么区别呢?主要是符号位,但是在普通的赋值,读写文件和网络字节流都没什么区别,反正就是一个字节,不管最高位是什么,最终的读取结果都一样,只是你怎么理解最高位而已,在屏幕上面的显示可能不一样。但是我们却发现在表示byte时,都用unsigned char,这是因为byte没有符号位之说。如果是char,那么系统认为最高位是符号位,而int可能是16或者32位,那么会对最高位进行扩展(注意,赋给unsigned int也会扩展),而如果是unsigned char,那么不会扩展。这就是二者的最大区别。
我的回答只针对C/C++语言,不知道你学的是不是这两种语言。
在C/C++中char型等价于整型数据,占一个字节,8个比特位。在语言中默认的就是signed char ,其范围
对应整数-128~+127,而unsigned char代表的是无符号的字符型,对应的整数范围为0~255.
例如:
#include
using namespace std;
int main()
{
char ch='a';
cout<<(int)ch<<endl;
return 0;
}
输出的就是97,即小写字母a,对应的十进制数为97.A对应为65.
在C/C++中char型等价于整型数据,占一个字节,8个比特位。在语言中默认的就是signed char ,其范围
对应整数-128~+127,而unsigned char代表的是无符号的字符型,对应的整数范围为0~255.
例如:
#include<iostream>
using namespace std;
int main()
{
char ch='a';
cout<<(int)ch<<endl;
return 0;
}
输出的就是97,即小写字母a,对应的十进制数为97,A对应为65。
扩展资料
C++中,有3种不同的字符类型:
char
signed char
unsigned char
如果用于文本,则使用未加限定的char, 类似于 'a', '0', 'abcde' 等。它也可以是一个值,但是是当做无符号还是有符号数没有指定。
如果将字符类型用作数字,那么:
signed char, 范围至少为 [-127 ~ 127] 。 (一般范围是 -128 到 127)
unsigned char, 范围至少为 [0 ~ 255]。
说“至少”是因为C++标准只指定了对应每一种数据类型值的最小覆盖范围。
如果真的要表示小的整数的话,最好使用 int8_t 和 uint8_t 。
unsigned char 和 signed char 区别:
signed char取值范围是 -128 到 127
unsigned char 取值范围是 0 到 255
ANSI C 提ANSI C 提供了3种字符类型,分别是char、signed char、unsigned char
char相当于signed char或者unsigned char,但是这取决于编译器!
这三种字符类型都是按照1个字节存储的,可以保存256个不同的值。
不同的是取值范围
signed char取值范围是 -128 到 127
unsigned char 取值范围是 0 到 255
signed char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255。
但是char究竟相当于signed char呢还是相当于unsigned char呢??
这就是char和int的不同之处!
int==signed int,但是char不能简单以为==signed char
要确定char究竟等同什么要基于不同的编译器做测试
大多数机器使用补码来存储整数,在这些机器中按照整数类型存储的-1的所有位均是1
假设我的机器也是如此存储,就能据此判断char究竟是等于signed char还是unsigned char
在实际使用过程种有什么区别呢?
主要是符号位,但是在普通的赋值,读写文件和网络字节流都没什么区别,反正就是一个字节,不管最高位是什么,最终的读取结果都一样,只是你怎么理解最高位而已,在屏幕上面的显示可能不一样。
但是我们却发现在表示byte时,都用unsigned char,这是因为byte没有符号位之说。
如果是char,那么系统认为最高位是符号位,而int可能是16或者32位,那么会对最高位进行扩展(注意,赋给unsigned int也会扩展),而如果是unsigned char,那么不会扩展。
这就是二者的最大区别。
我的回答只针对C/C++语言,不知道你学的是不是这两种语言。
在C/C++中char型等价于整型数据,占一个字节,8个比特位。在语言中默认的就是signed char ,其范围
对应整数-128~+127,而unsigned char代表的是无符号的字符型,对应的整数范围为0~255.
例如:
#include<iostream>
using namespace std;
int main()
{
char ch='a';
cout<<(int)ch<<endl;
return 0;
}
输出的就是97,即小写字母a,对应的十进制数为97.A对应为65.
我的回答只针对C/C++语言,不知道你学的是不是这两种语言。 在C/C++中char型等价于整型数据,占一个字节,8个比特位。在语言中默认的就是signed char ,其范围 对应整数-128~+127,而unsigned char代表的是无符号的字符型,对应的整数范围为0~255. 例如: #include<iostream> using namespace std; int main() { char ch='a'; cout<<(int)ch<<endl; return 0; } 输出的就是97,即小写字母a,对应的十进制数为97.A对应为65.
unsigned char 等同于 BYTE
signed char 等同于char
蓬狗多烯: 和char数组没有很大的区别 ,只是最高位也拿来存数值 不作为正负标志的符号位. 一位一位的读取可以采用右移的方法 void main() { int a[8],i; unsigned char c=0x32; for(i=0;i<8;i++) { a[7-i]=((c>>i)&&0x01);//将c从低位到高位一次存入到数组a中 } }
凤台县19880986702: unsigned char idata是什么意思 - ?
蓬狗多烯: unsigned char 是无符号字符,单字节 idata 表示变量位于内部数据区,外部数据区是 xdata,代码区是 code idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同(间接寻址).idata是用类似C中的指针方式 访问的.汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好).
凤台县19880986702: unsigned char和char的区别 - ?
蓬狗多烯: 在部分时候char或unsigned char的本质是8bit的整数,比如在图像领域,用8位数据描述灰度(或某一色彩分量)时通常使用unsigned char *类型的指针指向图像数据存储区域.这二者的主要区别于unsigned int和int的区别类似,就是最高位是否作为符号位.unsigned char表示范围为0~255,char的表示范围为-128~127
凤台县19880986702: 在C语言中,unsigned char是什么类型? - ?
蓬狗多烯: unsigned char是无符号字节型,char类型变量的大小通常为1个字节(1字节=8个位),且属于整型.整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号...
凤台县19880986702: unsigned char或unsigned char[] - ?
蓬狗多烯: 1. unsigned char表示无符号字符类型,其值的范围为0~255;signed char表示有符号字符类型,其值的范围为-128~127. 在编程时,如果只使用char的话,则根据编译器不同,可能会将char当成unsiged char或者signed char. 要想知道编译器怎么处...
凤台县19880986702: 在C++中,char与unsigned char有什么区别 - ?
蓬狗多烯: char 与 unsigned char是两个不同的数据类型, 取值范围完全相同,都是二进制的00000000-11111111, 也就是十六进制的00-FF. 长度都是1字节.所谓取值范围不同的理解只是因为他们是两个不同的数据类型,所以转换成十进制才会有不同的...
凤台县19880986702: unsigned char 取长度 - ?
蓬狗多烯: unsigned char 是无符号字符变量,不是字符串,长度为一字节.strlen的参数必须是字符串,即以'\0'结尾的字符数组.对于unsigned char c[100]来说,要想用strlen(c)求出c的长度,就必须在数组末尾加'\0'字符.可以直接读写指定数组元素,如c[50]='\0',也可以在定义时初始化成字符串,如 unsigned char c[100]="hello,world!"; 编译器会自动在感叹号后面一个数组元素写入'\0'.
凤台县19880986702: 如何把 int * 转换成 unsigned short - ?
蓬狗多烯: unsigned short s; unsigned char c; 1.直接赋值 c=s; 2.强制转换 c=(unsigned char)s; 3.C++建议用法 c = static_cast(s); //short一般占两个字节 char占一个字节
凤台县19880986702: 怎么把unsigned char 转化为string - ?
蓬狗多烯: 你是要把单个字符转换成string? 其实在C++中你只要几条语句就行了,因为C++中string是char的容器. 例如一个 string str="I love you xiaoyue!"; char ch=str[0]; 可见用下标访问得到的就是char型的数据.下面是程序: #include<iostream> ...
凤台县19880986702: * (unsigned char *)&ulA 具体是个什么含义是怎么组织到一起的,很看不懂,不解.......?
蓬狗多烯: * (unsigned char *)&ulA 运算顺序为* ((unsigned char *)(&ulA)) 1>先取 ulA的地址&ulA, &ulA为一个指针,可能为int*, void * ,char *等类型 2>将&ulA强制类型转化为 unsigned char *类型 3>*运算取出...