鱼C论坛

 找回密码
 立即注册
查看: 3951|回复: 3

有符号字符型的数值范围为什么是-128~+127

 关闭 [复制链接]
发表于 2012-3-14 21:32:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
菜鸟问题 请详解~
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-3-14 21:33:21 | 显示全部楼层
重点是-128怎么来的
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-3-14 22:19:13 | 显示全部楼层
这个我貌似懂,如果我能给你解释清楚,那就说明我真懂。检验一下自己,嘿嘿。
首先,数据在内存中都是以二进制数存放的,这毋庸置疑;
其次,字符型数据占用内存为一个字节,也就是8个二进制位。
那么这8个二进制位能表达的数据范围用二进制来表达就是00000000~11111111;
用甲鱼大大的话来说,“CPU很傻的,只认识0和1”,那么它怎么区分数据的正负呢?以最高位(也就是从右向左数的第8个二进制位)来区分。最高位为0,那么这个有符号数就是正数,最高位为1,这个有符号数就是负数。一共才8个二进制位,表示正负号用掉一个,那么就只剩下7个二进制位来表示大小了。那么最小的有符号数是多少呢?最高位的1表示负数的嘛,最小的数不是11111111就是10000000了。就究竟是哪个,这里涉及到一个补码的概念(需要你去学习,王爽的汇编语言附录里就有)。将二进制数取反再加1,所得的就是该负数的绝对值。1111111取反为00000000,加1为00000001,那么负数11111111的绝对值就是1,所以它表示的是十进制的-1,;10000000取反为01111111,加1为10000000,那么负数10000000的绝对值就是128,所以它表示的十进制数就是-128
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-3-25 09:41:12 | 显示全部楼层

说的很清楚~谢谢啊~
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-12 02:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表