社区
C语言
帖子详情
萌新有个关于补码方面的问题
夏一亚
2021-04-24 10:47:38
假设有两个补码x y
当需要比较x和y的大小时,如果x和y同号,可以用x-y=x+~y+1,然后去判断结果的正负,即可判断x和y的大小。
但是如果x和y异号的话,这样判断的结果就会有时为正有时为负。
求大佬解惑
...全文
287
4
打赏
收藏
萌新有个关于补码方面的问题
假设有两个补码x y 当需要比较x和y的大小时,如果x和y同号,可以用x-y=x+~y+1,然后去判断结果的正负,即可判断x和y的大小。 但是如果x和y异号的话,这样判断的结果就会有时为正有时为负。 求大佬解惑
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
夏一亚
2021-05-03
打赏
举报
回复
各位 我懂了 异号补码相减可能会溢出 所以结果会出现错误
源代码大师
2021-04-26
打赏
举报
回复
C和C++ 完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++ 算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html
真相重于对错
2021-04-25
打赏
举报
回复
正数补码及本身,负数补码为取反加1,所以你的式子不全对
forever74
2021-04-24
打赏
举报
回复
你一点都不提背景和代码,所以没法对症下药。 只能说,设计补码这种东西就是为了程序员省心的,所以大概率是你想多了。
【
补码
表示】为什么定点小数的-1
补码
表示为1.0000以及
补码
表示范围
问题
首先了解一下原码,反码,
补码
的概念 原码 原码的表示方法: 简单来说就是,在机器中我们使用0和1来区分一个数的符号,用0来表示正数,用1来表示负数。而原码表示就是将一个数绝对值的二进制表示出来后根据是正数还是负数在前面加0或1表示数的符号。这里注意一点,在定点小数中,原码是不能表示出-1这个值的 反码 反码的表示方法 简单易懂一些的话其实就是如果是正数,X的反码就等于原码,如果是负数,将X...
补码
究竟是什么?
补码
的本质:找到一个替代负数的正数,并用此正数的二进制形式参与运算,进行加法运算后,将得到的结果中溢出的数字舍去后,只读取结果中固定位数(此处是 8 位)的二进制数作为运算的结果。
关于
补码
的一些见解和求
补码
的三种方法
计算机系统的内部是以二进制形式存储数据。在java程序中输入的十进制数据都会被自动转换为二进制,Java内部也以二进制来进行数值运算,但返回的结果是十进制。在计算机系统中,数值一律采用二进制的
补码
来存储。二进制的最高位是符号位。0表示正数,1表示负数。正数的值是其本身,负数的值是最高位(符号位)不变,其他位逐位取反再加1。我们以四位二进制为例,来讲解一下四位二进制能表示的
补码
范围。首先在计算机...
补码
的表示 以及+-0的
问题
正数的
补码
是其本身,也就是原码. 负数的
补码
是各位取反后加1.也就是其反码加1. +0的
补码
就是其原码,也就是说是0000 0000而已(对于8位来说) -0的
补码
是其反码加1,其反码是1111 1111,当然,其反码加1后就是溢出一个进位后,仍然是0000 0000.
问题
出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的。 于是就引入了
补码
概念。负数的
补码
就是对反码加一,而正数不...
补码
的优点及
补码
公式
我们知道,n位二进制数能表示的数的个数肯定是偶数个(2的n次方),既然只有一个0,那正数和负数的个数肯定是不相等的(个数和为2^n-1)。正0的
补码
是原码本身(没有加1),负0的
补码
是原码的反码加1(有加1),所以二者之和不可能是0,即00000000+10000000不等于0,所以
补码
10000000肯定不再表示0。所以,10000001-1=10000000,这个结果正是前面讨论的-0的
补码
,它应该表示-128,这个数就是最小的负数。它们的共同点是都有符号位和数值位,最高位为符号位,其他位为数值位。
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章