社区
C语言
帖子详情
char表示范围的疑惑
yilin54
2010-06-22 03:37:26
char 的最大值是127=01111111(二进制),我理解。
为什么最小值是-128啊?
我觉得应该是11111111啊,第一位1表示负号,那应该是-127啊?
...全文
538
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
是一个字节类型。 由8位组成。
char
又分为 signed
char
(有符号类型) 和 unsigned
char
(无符号类型)。 通常,我们的理解是将
char
作为 signed
char
来处理。 我们先来看 signed
char
的最大值。 最高位是 符号位, 0 代表正数; 1 代表负数。 0 1 1 1 1 1 1 1 这个值等于 2^
深入了解计算机系统中:unsigned
char
和
char
的思考和实验
笔者最近再看深入理解计算机系统,在看到书31(中文版)不禁对下面的程序起了
疑惑
typedef unsigned
char
*byte_pointer; void show_byte(byte_pointer start, size_t len) { for (size_t i = 0; i < len; i++) printf("%.2x", start[i]); printf("\...
char
类型的
范围
是-128 ~ +127
参考:https://blog.csdn.net/qzl1221/article/details/78040590/?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242
java
char
byte 区别_
char
与byte的区别
很多初学者(包括我,已经学了一年多Java了)肯会对
char
和byte这两种数据类型有所
疑惑
,相互混淆,今天特地查了好多资料,对byte和
char
两种数据类型进行了总结和比较,先将结果与大家分享:byte是字节数据类型,是有符号型的,占1个字节;大小
范围
为-128—127 。
char
是字符数据类型,是无符号型的,占2字节(Unicode码);大小
范围
是0—65535;
char
是一个...
Java中byte和
char
的区别
类型 符号 大小
表示
范围
是 -128-127 byte 有符号 1 字节 大小
范围
是 -128-127
char
无符号 2字节 大小
范围
为 0-66535 ( 对应的 Unicode BMP 码位置) 注意1 Java 设计时 Unicode 的码点上限还是 0xFFFF,也就是Java 中
Char
2个字节长度的由来(UTF-16 code unit)。也就是说Java中的
Char
只能
表示
简化版的Unicode,即 BMP(第0平面)
范围
内的字符。 有些字符...
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章