数据类型unsigned char表示范围(存储值的范围)是多少,为啥(写出计算过程)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型unsigned char表示范围(存储值的范围)是多少,为啥(写出计算过程)相关的知识,希望对你有一定的参考价值。
在32位系统中,unsigned char是用1字节存储的,它没有符号位,因此能表示0~1111 1111,最大值就是0xFF,也就是255。
char类型是8位,最高位是符号位,0正1负,所以01111111是127。
-127是10000001,而10000000换算过来就是-128。
一个n位有符号int型数值,其范围为-2^(n-1) ——2^(n-1) -1”。
扩展资料:
字节是二进制数据的单位。一个字节通常8位长。但是,一些老型号计算机结构使用不同的长度。为了避免混乱,在大多数国际文献中,使用词代替byte。在多数的计算机系统中,一个字节是一个8位长的数据单位,大多数的计算机用一个字节表示一个字符、数字或其他字符。一个字节也可以表示一系列二进制位。
参考资料来源:百度百科-字节
参考技术A 在32位系统中,unsigned char是用1字节存储的,它没有符号位,因此能表示0~1111 1111,最大值就是0xFF,也就是255。C/C++ unsigned char*类型
C++ unsigned char *是表示无符号字符指针的意思。
细节如下:
char 前面添加unsigned表示是无符号的字符,也就是不可以存储负数;
在数据类型后面加*表示指针的意思;
指针是C和C++的一种特色数据类型,可以方便的访问内存,也可以通过指针自己控制堆的分配与使用。
此外:
在C中,默认的基础数据类型均为signed,如定义变量为int,long等,都为有符号的。如果要定义无符号类型,必须显式地在变量类型前加unsigned。
char vs unsigned char
相同点:在内存中都是一个字节,8位(2^8=256),都能表示256个数字
不同点:char的最高位为符号位,因此char能表示的数据范围是-128~127,unsigned char没有符号位,因此能表示的数据范围是0~255
实际使用中,如普通的赋值,读写文件和网络字节流都没有区别,不管最高位是什么,最终的读取结果都一样,在屏幕上面的显示可能不一样。
但是要把一个char类型的变量赋值给int、long等数据类型或进行类似的强制类型转换时时,系统会进行类型扩展,这时区别就大了。对于char类型的变量,系统会认为最高位为符号位,然后对最高位进行扩展,即符号扩展。若最高位为1,则扩展到int时高位都以1填充。对于unsigned char类型的变量,系统会直接进行无符号扩展,即0扩展。扩展的高位都以0填充。所以在进行类似的操作时,如果char和unsigned char最高位都是0,则结果是一样的,若char最高位为1,则结果会大相径庭。
参考文章:c语言中 char* 和 unsigned char* 的区别浅析
缘由
yolo.cc里:
以上是关于数据类型unsigned char表示范围(存储值的范围)是多少,为啥(写出计算过程)的主要内容,如果未能解决你的问题,请参考以下文章