社区
C语言
帖子详情
char表示范围的疑惑
yilin54
2010-06-22 03:37:26
char 的最大值是127=01111111(二进制),我理解。
为什么最小值是-128啊?
我觉得应该是11111111啊,第一位1表示负号,那应该是-127啊?
...全文
546
14
打赏
收藏
char表示范围的疑惑
char 的最大值是127=01111111(二进制),我理解。 为什么最小值是-128啊? 我觉得应该是11111111啊,第一位1表示负号,那应该是-127啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
文君
2011-11-14
打赏
举报
回复
注意正零和负零的区别。
yilin54
2010-06-23
打赏
举报
回复
我已经意会了。谢谢各位~
liutengfeigo
2010-06-22
打赏
举报
回复
没去认真研究过。。学习了
sbdx86
2010-06-22
打赏
举报
回复
我觉得:负数在内存中用补码表示,-1 的原码10000001 反码是11111110 补码是11111111.
-127的原码11111111 反码是10000000 补码是10000001
这样 10000000就用来表示-128了.
lixuyu
2010-06-22
打赏
举报
回复
1、这是在补码表示法、char是有符号数的情况下;
2、注意,最大值并不一定是127。char并不一定是有符号的,C标准可没有这么规定,char可能是按照signed char处理,也可能是按照unsigned char处理,不同的编译器、不同的编译选项处理不同。
zjf30366
2010-06-22
打赏
举报
回复
[Quote=引用楼主 yilin54 的回复:]
char 的最大值是127=01111111(二进制),我理解。
为什么最小值是-128啊?
我觉得应该是11111111啊,第一位1表示负号,那应该是-127啊?
[/Quote]
http://blog.csdn.net/ylqmf/archive/2009/12/18/5031807.aspx
http://blog.csdn.net/ylqmf/archive/2009/12/18/5031788.aspx
itegel84
2010-06-22
打赏
举报
回复
有符号时用补码表示的就是-128~127
无符号时...
wzyzb
2010-06-22
打赏
举报
回复
顶 下
zjf30366
2010-06-22
打赏
举报
回复
这个原码和反码是一样的[Quote=引用 3 楼 yilin54 的回复:]
我想问下:1000 0000表示的是什么啊?是原码还是什么码啊?
引用 1 楼 baihacker 的回复:
1.char的需求是能装下标准的ascii字符,所以-128到127或者0到255都是可能的。
2.1111 1111按第一位负号,后面的作为绝对值的话,这是原码,但是计算机中存的是补码。
所以是1000 0000
取反得到0111 1111
加上1得到1000 000……
[/Quote]
wdy0725
2010-06-22
打赏
举报
回复
因为最高位是符号位,那么 00000000 与 10000000 是不是都是0呢?2楼讲的很清楚了。
一句话,在表示正数时,一个让给了0.
yidasoft
2010-06-22
打赏
举报
回复
10000是补码啊
00000是原码的0
yilin54
2010-06-22
打赏
举报
回复
我想问下:1000 0000表示的是什么啊?是原码还是什么码啊?
[Quote=引用 1 楼 baihacker 的回复:]
1.char的需求是能装下标准的ascii字符,所以-128到127或者0到255都是可能的。
2.1111 1111按第一位负号,后面的作为绝对值的话,这是原码,但是计算机中存的是补码。
所以是1000 0000
取反得到0111 1111
加上1得到1000 0000
其绝对值是128也就是说在内存中1000 0000表示-128
[/Quote]
baihacker
2010-06-22
打赏
举报
回复
ascii字符应该改成:具体实现中的基本字符。
baihacker
2010-06-22
打赏
举报
回复
1.char的需求是能装下标准的ascii字符,所以-128到127或者0到255都是可能的。
2.1111 1111按第一位负号,后面的作为绝对值的话,这是原码,但是计算机中存的是补码。
所以是1000 0000
取反得到0111 1111
加上1得到1000 0000
其绝对值是128也就是说在内存中1000 0000表示-128
signed
char
的取值
范围
为何最小为-128
本文详细解释了
char
类型的取值
范围
,包括signed
char
的最大值和最小值的计算方法,并阐述了为什么取值
范围
是-128到127。
深入了解计算机系统中:unsigned
char
和
char
的思考和实验
本文通过实验对比了使用不同类型的指针(int*,
char
*, unsigned
char
*)在显示整数内存
表示
时的区别,解释了为何通常选择unsigned
char
*作为字节指针。
java
char
byte 区别_
char
与byte的区别
本文详细介绍了Java中byte和
char
数据类型的异同。byte是带符号的字节类型,
范围
从-128到127,而
char
是无符号的16位Unicode字符,可
表示
0到65535的值。
char
能
表示
中文字符,byte则不能。此外,
char
和byte可以相互转换,但
char
不能
表示
负数。通过实例展示了它们在存储和
表示
数值及字符时的区别。
char
类型的
范围
是-128 ~ +127
本文深入探讨了-128在8位
char
类型中的二进制
表示
方式,解释了为何10000000可以
表示
-128,并通过展示-128的原码、反码和补码来解答这一问题。
Java中byte和
char
的区别
本文探讨了Java中byte和
char
类型的转换,包括它们的大小
表示
范围
,以及在处理Unicode字符时可能出现的问题。Java的
Char
类型由于Unicode限制只能
表示
BMP平面的字符,对于超出
范围
的四字节字符,需要用两个
char
来
表示
。转换过程中,byte转
char
可能会导致数据丢失,解决方案包括使用short拓宽或通过位运算避免符号位参与转换。理解这些细节对于Java编程至关重要。
C语言
70,039
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章