社区
汇编语言
帖子详情
补码问题:为何取值范围负数比正数大1?
ScorpioZZR
2003-08-20 06:20:14
n位补码表示数的范围是: -2^(n-1)<=N<=2^(n-1)-1
比如16位的表数范围是:-32768~32767
为什么正数那里要减1?而不能是: -32768~32768这样呢?那个少掉的1用在哪里了?
...全文
852
4
打赏
收藏
补码问题:为何取值范围负数比正数大1?
n位补码表示数的范围是: -2^(n-1)<=N<=2^(n-1)-1 比如16位的表数范围是:-32768~32767 为什么正数那里要减1?而不能是: -32768~32768这样呢?那个少掉的1用在哪里了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
W32API
2003-08-21
打赏
举报
回复
-32768~32768
那你的 0 要不要算一个数?
-32768~0~32767
原因看补码的定义
windows3000
2003-08-20
打赏
举报
回复
对于补码,表示负号的1兼有符号和数字的双重意义。
1000 0000,应是-128。
GhostAdz
2003-08-20
打赏
举报
回复
其实那是算出来的
正数最大比如8位的
那最大一定是01111111 是127对吧--------不可能再大了
负数开头一定是1对吧,所以最小的负数就是10000000
-128没错吧
8位范围就是-128--+127
人们为了平衡就把0做正数了
nicememory
2003-08-20
打赏
举报
回复
少掉的1...
负数有32768个,正数32767个,还有个0
原码、反码、
补码
知识总结
数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负).这就是机器数的原码了.因为在两个整数的加法运算中是没有
问题
的,于是就发现
问题
出现在带符号位的
负数
身上,对除符号位外的其余各位逐位取反就产生了反码.反码的取值空间和原码相同且一一对应. 在人们的计算概念中零是没有正负之分的,于是就引入了
补码
概念.
负数
的
补码
就是对反码加一,而
正数
不变,
正数
的原码反码
补码
是一样的.
java版2048源码下载-jvm:实战虚拟机
java版2048源码下载 实战JAVA虚拟机 java语言规范 语法,词法,支持的数据类型,变量类型,数据类型转换的约定,数组,异常等,告诉开发人员“java代码应该怎么样写” 词法 什么样的单词是对的。 整数可以有下划线 语法 什么样的语句是对的。 数据类型的定义 char为16位无符号整数。 float和double为满足IEEE754的32位浮点数和64位浮点数。 引用数据类型分为3重 类/接口 泛型类型 数组类型 数字编码 整数用
补码
表示,
正数
的
补码
是本身,
负数
的
补码
就是反码+1。反码就是符号位不变,其他位取反。
补码
的好处 0既不是
正数
也不是
负数
,反码不好表示,
补码
则相同。
补码
将加减法的做法完全统一,无需区分
正数
和
负数
浮点数的表示 IEEE754规范,一个浮点数由符号位,指数位和尾数位3部分组成。 32位的float类型,符号位1位,指数位8位,尾数位为23位。 s eeeeeeee m(23个) 当e全部为0的时候,m前面加0,否则加1 浮点数取值为 s * m * 2的(e-127)次方 -5 = 1 1000001 010(21个0) 因为 e 不全为0,前面加个
JavaSE基础视频精讲①:环境配置和二进制转换
本课程适用于零基础小白快速入门Java语言技术,通过课程学习可以清晰了解Java开发的环境配置和二进制转换。课程配套完整的(笔记+代码+作业)课程主要分为:1.软件开发的常识2.Java语言的简介3.Java程序开发前的准备工作4.Java程序的运行机制5.第一个Java程序6.注释的使用7.Java编码规范8.API文档的简单使用9.关键字和标识符10.进制的相关概念11.进制之间的相互转换112.进制之间的相互转换213.原码反码以及
补码
为什么用
补码
表示
负数
, 为什么
负数
比
正数
多1?
(1)无符号16位的范围 0000 0000 0000 0000 到 1111 1111 1111 1111 无符号16位整型数据的
取值范围
是0到65535。 (2)有符号16位范围
正数
:0000 0000 0000 0001 到 0111 1111 1111 1111 十进制数为1到32767
负数
1000 0000 0000 0000 到1111 1111 1111 1111...
为什么16位int的
取值范围
是-32768~32767?
因为有正0和负0之分,负0被充当
负数
的最小值 为什么int的
取值范围
负数
比
正数
多1? 这里记录一下答案。 基础知识: 因为
正数
在计算机中以原码的形式存在,
负数
在计算机中以
补码
的形式存在。
正数
:原码=反码=
补码
负数
:反码=原码除符号位之外的所有位取反
补码
=反码+1 因此16位拿出一位做符号位。
正数
的最大值就是2的15次方-1(减一是因为从0开始) 按照这个逻辑,
负数
的最小值是1-2的15次方,但结果不是这样。 这是因为在二进制中,0有两种表示形式。 +0的原码为000
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章