char类型的取值范围

简介: char类型的取值范围

首先我们要知道,数据的大小是有什么决定的

答案是其数据类型所拥有的的内存空间

当我们知道了其数据类型,

如:

int 占4byte

char 占  1byte

此时因为他们所拥有的内存空间也就使他们的二进制位就有分别

int 32bit

char 8bit

而一个bit的大小可以放一个二进制

所以他们的最大值可能就是(此处看成无符号的):

int 1111 1111 1111 1111 1111 1111 1111 1111(4,294,967,168)

char 同理   1111 1111  (255)

而最小值为

0000 0000 0000 0000 0000 0000 0000 0000

当我们考虑上符号位(二进制的第一位)时:

他们的最大最小值就会发生改变(此处就直接那char举例、int 同理推理):

char的取值的所以可能性:

0000 0000

0000 0001

.....

0111 1110

0111  1111(此处已经是char类型的最大正数了127)

在加上1就为

1000 0000 (-128)此处是一个固定的值,当char中出现该数就会直接看成-128

1000 0001(-127)此处存的是补码先将其转化成原码1111 1110 、1 111 1111(-127)

注意:这里要区分与printf打印处的区别(先提升再看是否要转变blog)

.....

1111 1110

1111 1111 通过补码转化成原码   1000 0001   也就是 -1

所以通过上面我们就可以得出在

有符号的char类型的取值范围:

signed char(大部分编译器的char) : -128 ~ 127

unsigned char :0 ~ 255

共有256个

附:

如何通过给你一个有符号的char(用于负数,正数没必要)在而判断出他无符号的char的数值,

如:当给你-128要你转化成正数是多少:

那就可以通过

256  + 这个数

256 + (-128) = 128

同理

- 92 :此时就为 256 - 92 = 168

反之若要你通过正数找负数那就用 256 - 正数

                        256  - 168 = 92

下面这张图就能更好的去记忆char类型的范围

image.png


有符号的char当数字大于127后就会变成-128,再当数字大于-1,就会变回0

无符号的char当数字大于127....               129  ...                   255    ..           0

如此循环,无法超越范围

当然short , int ...等都是相同的

相关文章
|
6月前
|
存储 编译器 C语言
c语言中char的作用类型
c语言中char的作用类型
212 0
|
1月前
|
SQL 存储 关系型数据库
SQL判断CHAR类型字段不为空的方法与技巧
在SQL查询中,判断一个CHAR类型字段是否不为空是一个常见的需求
|
2月前
|
存储 Java Windows
java基础(9)数据类型中的char类型以及涉及到的转义字符
Java中的char类型可以存储一个中文字符,因为它占用两个字节。转义字符允许在代码中使用特殊字符,例如`\n`表示换行,`\t`表示制表符,`\\`表示反斜杠,`\'`表示单引号,`\"`表示双引号。可以使用`\u`后跟Unicode编码来表示特定的字符。
56 2
java基础(9)数据类型中的char类型以及涉及到的转义字符
|
3月前
|
存储 自然语言处理 编译器
C语言中的char类型
C语言中的char类型
239 1
|
6月前
|
存储 关系型数据库 MySQL
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%🚀
本篇文章来讨论MySQL字段的字符类型选择并深入实践char与varchar类型的区别以及在千万数据下的性能测试
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%🚀
|
5月前
详细解读C++char类型函数
详细解读C++char类型函数
56 0
|
5月前
|
C++
E0144 “const char *“ 类型的值不能用于初始化 “char *“ 类型的实体
E0144 “const char *“ 类型的值不能用于初始化 “char *“ 类型的实体
|
6月前
|
C++
【C++】std::string 转换成非const类型 char* 的三种方法记录
【C++】std::string 转换成非const类型 char* 的三种方法记录
165 0
|
6月前
|
存储 人工智能 编译器
learn_C_deep_5 (温故知新、sigend char a = -128的深度理解、unsigned int类型的写法规范)
learn_C_deep_5 (温故知新、sigend char a = -128的深度理解、unsigned int类型的写法规范)
|
6月前
|
存储 算法 安全
C++系列-第1章顺序结构-9-字符类型char
C++系列-第1章顺序结构-9-字符类型char