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类型的范围

char类型的取值范围_第1张图片

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

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

如此循环,无法超越范围

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

你可能感兴趣的:(C语言练习,算法,c++,数据结构)