char类型的取值范围是

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了char类型的取值范围是相关的知识,希望对你有一定的参考价值。

char类型的取值范围是
A.2-7 ~27 -1
B.0~216-1
C.-215 ~215 -1
D.0~28-1

char类型占一个字节。所占位数为8位。取之范围为-128~127(补码形式存储)。答案应该选A。当然还存在unsigned char了,那样就为0~255了。 参考技术A 按八位来算:
在计算机里面是用补码表示的,128的二进制码是:10000000,这个东西在计算里面并不是128,因为最高位是符号,它是个负数,那么负数的原码是多少呢,我们知道如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。
所以,10000000取反后就是11111111,把符号位去了就是01111111再加1就是10000000就是-128了。
其实你看-127是10000001,这个很好理解,-128加1不就是-127嘛。
参考技术B B
本题考查java数据类型的取值范围,应该掌握常用的数据类型的取值范围,char类型在内存中占16位,取值范围是0h65535,也就是0~2的16次方减1,选项B正确
参考技术C 应该为-128~127
选项A应该为-2^7~2^7-1
选择A
参考技术D 不同的语言对于char类型的定义不太一样,c语言选A,java语言选B

char(int……)类型取值范围

先抛问题,为什么char的取值范围是-128-127或0-255呢?

再做解答:
概念悉知:char类型占一个字节,一个字节8个比特位。计算机中储存数字储存的是补码,正数的原返补相同;
1.当char是无符号的时:8个比特位分布为 0000 0000 为最小值0,而当8个比特位分布为 1111 1111 时为最大值即2^8-1=255;
2.当char是有符号类型时:最高比特位为符号位,因此在数值上的最大值为111 1111
即2^7-1=127; 那么,还剩下一个比特位为符号位,那不就表示 取值范围为 -127—127吗,怎么会是-128呢;
3.接下来谈谈-128的由来:
理由一:-127-127总共有255个数字,而8个比特位共有256中排列组合,在有符号类型中 0000 0000 表示数值为+0(暂且这么描述),1000 0000 表示数值为-0,那么一个0有两种表示,很显然浪费了一种排列组合1000 0000,那么多出来的位置怎么才不浪费呢? -127-127都有对应的表示了,1000 0000最高位为1表示负数,那么只能往下安排了,即(规定,规定,规定)100 0000表示-128;
理由二:定义char n= -128,-128的原码为1 1000 0000,反码为原码符号位不变,其它位按位取反1 0111 1111,补码为反码+1,1 1000 0000,将其放入n中时发生截断即 1000 0000,恰好与规定吻合;
4.验证1000 0000==128;

如图,定义一个有符号的char变量,将128赋值给它,128的二进制序列为1000 0000,输出时却是-128,即当出现1000 0000序列即默认符合规定等于-128,不再进行转换;

其余类型以此类推;

以上是关于char类型的取值范围是的主要内容,如果未能解决你的问题,请参考以下文章

char类型的取值范围为何是-128~127,怎么算?

char取值范围

C语言中怎么计算一个类型的取值范围?如 char 用程序算

c++枚举类型的取值范围

char(int……)类型取值范围

数据类型取值范围计算