美文网首页
为什么int的负数绝对值比正数最大值大1

为什么int的负数绝对值比正数最大值大1

作者: justonemoretry | 来源:发表于2021-04-18 14:33 被阅读0次

这是刷题时遇到将负数直接变成正数溢出遇到的问题,然后就去百度了一下,总结如下。

首先是说负数的二进制表示,比较好理解的就是课本上说的,对应的正数的原码,取反码,反码是对原码按位取反,符号位除外,然后加1,也就是说用补码来表示。

比如说-3吧,以八位为例,对应原码是1000 0011,对应的反码就是1111 1100,然后加1,所以-3在二进制中的表示就是1111 1101。

这样直接理解呢,8位有符号数无法表示128的原码,因此-128是没有反码的,只有原码和补码,这个可以直接为1000 0000是规定的128。

但是还有一种更好的理解方式,就是补码不按课本上理解,按减法取模来理解:

x的补码=256 - |x|,这里是都按无符号数来理解,这样的话,就可以理解1000 0000的补码和反码都是自己,以刚才的-3为例0000 0011 = 3 加上 1111 1101 =  253 就是256了。

参考文章:https://blog.csdn.net/z69183787/article/details/78545519

相关文章

  • 为什么int的负数绝对值比正数最大值大1

    这是刷题时遇到将负数直接变成正数溢出遇到的问题,然后就去百度了一下,总结如下。 首先是说负数的二进制表示,比较好理...

  • 负数

    负数是什么?负数就是,比0少的就叫做复数。正数是什么?正数就是比零大的。所以零他既不是负数,也不是正数。而是负数与...

  • js 正负互转

    正数转成负数,这里直接用~ 负数转成正数,这里用绝对值Math.abs(),不用~,避免蜜汁问题 --by Aff...

  • MySQL~操作表函数

    一、数值型函数 1、ABS函数--) 绝对值函数 绝对值函数ABS(x)返回x的绝对值,正数的绝对值是其本身,负数...

  • 反码 补码

    正数的反码,补码都是正数的二进制本身 负数的二进制:负数的绝对值所对应的二进制最高位变成1 负数的反码:最高位不变...

  • 有理数加减

    正数加正数,负数加负数,正数加负数正数减负数,负数减正数负数减负数,正数减正数。 以上是有理数的加减 在同号时绝对...

  • 绝对值

    数学中大家都求过绝对值,不管绝对值里面是正数还是负数,结果都是正数。 我们的生活也是一样,不管现在什么样子,不管现...

  • 二进制负数

    二进制负数 由原码的补码表示 原码:正数-数字的绝对值转换为二进制负数-数字的绝对值转换为二进制后最高位补1例:5...

  • 数学探索:去绝对值号

    在初中学习完绝对值 后,我们知道绝对值一下的这几点特点: 正数的绝对值是它本身:=a (a>0); 负数的绝对值是...

  • java基础知识之random.nextInt()的用法

    1、不带参数的nextInt()会生成所有有效的整数(包含正数,负数,0) 2、带参的nextInt(int x)...

网友评论

      本文标题:为什么int的负数绝对值比正数最大值大1

      本文链接:https://www.haomeiwen.com/subject/hdfvlltx.html