负数的二进制表示

负数的二进制表示问题 假设有一个 int 类型的数 值为 5 那么 我们知道它在计算机中表示为 000000000000 转换成二制是 101 不过 int 类型的数占用 4 字节 32 位 所以前面填了一堆 0 5 在计算机中如何表示 在计算机中 正数是直接用原码表示的 如单字节 5 在计算机中就表示为 00000101 负数以其正值的补码形式表示 如单字节 5 在

问题: 假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000 00000000 00000000 00000101

5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。

-5在计算机中如何表示?

在计算机中,
正数是直接用原码表示的,如单字节5,在计算机中就表示为:0000 0101。
负数以其正值的补码形式表示,如单字节-5,在计算机中表示为1111 1011。

什么叫补码呢?这得从原码,反码说起。

原码:
一个正数的原码,是按照绝对值大小转换成的二进制数;
一个负数的原码,是按照绝对值大小转换成的二进制数,然后最高位补1。

比如 :
00000000 00000000 00000000 00000101是 5的 原码。
00000000 00000000 00000101是 -5的 原码。

反码:
正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。

取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)

比如:
正数00000000 00000000 00000000 00000101的反码还是00000000 00000000 00000000 00000101
负数 00000000 00000000 00000101每一位取反(除符号位),得

称: 00000000 00000000 00000101的反码。
反码是相互的,所以也可称:
00000000 00000000 00000101 互为反码。

补码:
正数的补码与原码相同;
负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
比如:
00000000 00000000 00000101的反码是:
那么,补码为:
+ 1 =





所以,-5 在计算机中表达为: 。转换为十六进制:0xFFFFFFFB。

我们来看整数-1在计算机中如何表示。

问题:

x为int类型,为什么 -x=!x+1 ?

原因:

总结

  1. 正数的反码和补码都与原码相同。
  2. 而负数的反码为对该数的原码除符号位外各位取反。
  3. 负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1

概念

  1. 原码表示法规定:用符号位和数值表示带符号数,正数的符号位用“0”表示,负数的符号位用“1”表示,数值部分用二进制形式表示。
  2. 反码表示法规定:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
  3. 补码表示法规定:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
  4. 正零和负零的补码相同,[+0]补=[-0]补=0000 0000B
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203816.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午9:31
下一篇 2026年3月19日 下午9:31


相关推荐

  • Pycharm全局搜索快捷键失效「建议收藏」

    Pycharm全局搜索快捷键失效「建议收藏」问题很久没用pycharm的全局收缩快捷键。今天一用,发现用不了。后面才发现是与win10自带的输入法的繁简体切换快捷键冲突了。解决

    2022年5月6日
    103
  • Python函数总结大全(函数定义,参数种类、返回值等)

    Python函数总结大全(函数定义,参数种类、返回值等)目录函数与函数式编程函数的定义函数与过程返回值与返回值类型前向引用内部 内嵌函数函数装饰器传递函数参数的种类位置参数参数默认值命名关键字参数关键字参数 others 便于函数功能的扩展任意的参数列表 others 解包参数列表解包参数列表函数与函数式编程函数是组织好的 可重复使用的 用来实现单一 或相关联功能的代码段 函数能提高应用的模块性 和代码的重复利用率 Python 提供了许多内建函数 比如 print 我们也可

    2026年3月16日
    2
  • MySQL Access denied for user ‘root‘@‘localhost‘ (using password: YES/NO) 的原因以及解决方案

    MySQL Access denied for user ‘root‘@‘localhost‘ (using password: YES/NO) 的原因以及解决方案Accessdenied root localhost usingpasswor YES NO 的原因以及解决方案这个错误我想应该是比较常见的一种错误了 但 出现错误并不可怕 可怕的是你并不知道原因 从而不知道如何解决问题 Accessdenied root localhost usingpasswor YES NO 还是先翻译一下比较好 意思为无权限使用 root 账号本地登录 MySQL 括号内是 使用密码 是 不是 首先

    2026年3月17日
    2
  • intelj 2021 激活码(注册激活)[通俗易懂]

    (intelj 2021 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWN…

    2022年3月21日
    57
  • implicit declaration of function 警告解决方法 (函数的隐式说明)

    implicit declaration of function 警告解决方法 (函数的隐式说明)这个问题其实是很低级的问题 但是经常还是容易发生 翻译下就是函数的隐式说明原因 是因为函数没有在头文件 h 定义 这就导致编译的时候没法正确生成 o 文件

    2026年3月18日
    1
  • js遍历Map结构的数据

    js遍历Map结构的数据数据如下所示 varstr 长江 id 1 name 设备 1 state 0 江北 id 3 name 设备 3 state 0 id 5 name 设备 3 state 0 id 6 name 设备 3 state 0

    2026年3月26日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号