java char表示范围_char取值范围

java char表示范围_char取值范围本文详细介绍了计算机中 char 类型 包括 signedchar 和 unsignedchar 着重讲解了 signedchar 的取值范围 从补码的角度解释了其最大值 127 和最小值 128 的计算过程

展开全部

1.char 是一个字节类型。 由8位组成。  char 又分为 signed char (有符号类型) 和 unsigned char (无符号类型)。 通常,我们的理解是afe58685e5aeb3537将char 作为 signed char 来处理。

2.我们先来看 signed char的最大值。  最高位是 符号位, 0 代表正数; 1 代表负数。0 1 1 1  1 1 1 1     这个值等于 2^0 + 2^1 + 2^2  + 2^3  + 2^4  + 2^5  + 2^6  = 127  。 也有一个简便计算方法:2^7 -1 = 128-1 =127   所以,signed char 的最大值是 127 。  这个容易理解。

3.接下来,看看 singed char 的 最小值 是如何计算的?需要明白一个概念, 在计算机中, 数值是以补码形式存储的。 正数的补码是其本身; 而负数的补码是 取反 (符号位保持不变),再加1。

4.我们先来看 -1 的存储过程:

-1:     1 0 0 0  0  0  0  1    ->(取反) 1 1 1 1 1 1 1 0     ->(加1)  1 1 1 1 1 1 1 1

-2:  1 0 0 0  0  0  1  0    ->(取反) 1 1 1 1 1 1 0 1     ->(加1)  1 1 1 1 1 1 1 0

-3:  1 0 0 0  0  0  1  1    ->(取反) 1 1 1 1 1 1 0 0     ->(加1)  1 1 1 1 1 1 0 1

… …

-127   1 1 1 1  1  1  1  1    ->(取反) 1 0 0 0 0 0 0 0     ->(加1)  1 0 0 0 0 0 0 1

-128   1 0 0 0  0  0  0  0    ->(取反) 1 1 1 1 1 1 1 1     ->(加1)   1 0 0 0  0  0  0  0

5.不管是原码还是补码, 总会出现  -0 这个值。 本来 +0 与 -0 是没有区别的。 但对于存储器和编译器来讲,总得充分利用每个字节吧, 更不想出现二义性。 那么,干脆将 -0 表示为 -128 , 这样一来,既增大了signed char 数值的表示范围,又消除了 -0 的二义性,所以signed char的取值范围是 -128~127。

9b9ea9492170d683fc7e1d2f84eda145.png

拓展资料

char是C/C++整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认是signed,但char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的,有些编译器如pSOS的编译器,还可以通过编译开关来指定它是有符号数还是无符号数。

char是characteristic的简写,表示一个环或者域的特征,即最小的非负整数n,使ne=0。(e为单位) 。

今天的文章 java char表示范围_char取值范围分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-01-06 14:21
下一篇 2025-01-06 14:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/103365.html