char类型的取值范围是
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了char类型的取值范围是相关的知识,希望对你有一定的参考价值。
char类型的取值范围是
A.2-7 ~27 -1
B.0~216-1
C.-215 ~215 -1
D.0~28-1
在计算机里面是用补码表示的,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类型的取值范围是的主要内容,如果未能解决你的问题,请参考以下文章