负数的二进制表示方法 原码、反码、补码

2023-05-16

6.5 原码、反码、补码

 

结束了各种进制的转换,我们来谈谈另一个话题:原码、反码、补码。

 

我们已经知道计算机中,所有数据最终都是使用二进制数表达。

我们也已经学会如何将一个10进制数如何转换为二进制数。

不过,我们仍然没有学习一个负数如何用二进制表达。

 

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

00000000 00000000 00000000 00000101

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

现在想知道,-5在计算机中如何表示?

 

在计算机中,负数以其正值的补码形式表达

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

 

原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。

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

 

反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。

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

比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。

称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。

反码是相互的,所以也可称:

11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。

 

补码:反码加1称为补码。

也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。

比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。

那么,补码为:

11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011

 

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

 

再举一例,我们来看整数-1在计算机中如何表示。

假设这也是一个int类型,那么:

 

1、先取1的原码:00000000 00000000 00000000 00000001

2、得反码:     11111111 11111111 11111111 11111110

3、得补码:     11111111 11111111 11111111 11111111

 

可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF。

 

一切都是纸上说的……说-1在计算机里表达为0xFFFFFF,我能不能亲眼看一看呢?当然可以。利用C++ Builder的调试功能,我们可以看到每个变量的16进制值。

http://www.cnblogs.com/yezhenhan/archive/2011/10/26/2225096.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

负数的二进制表示方法 原码、反码、补码 的相关文章

  • 【总结】python3启动web服务引发的一系列问题

    背景 在某行的实施项目 xff0c 需要使用python3环境运行某些py脚本 由于行内交付的机器已自带python3 xff0c 没有采取自行安装python3 xff0c 但是运行python脚本时报没有tornado module 错
  • 【总结】记一次log4j包冲突引发es类找不到的问题

    问题现象 某天 xff0c 某个应用搞新的迭代 xff0c 突然报ElasticSearch 7 17 5 相关操作都失败了 xff0c 且问题是必现 xff0c 本地启动也能稳定复现 组内小伙伴按照es jar包冲突排查了一番 xff0c
  • 【总结】hive-jdbc升级后执行spark.sql查询hive报错NoSuchFieldError: HIVE_STATS_JDBC_TIMEOUT

    问题现象 最近做安全软件版本升级 xff0c 将hive jdbc从1 2 1升级到hive 2 3 3 xff0c 升级后 xff0c 发现系统 xff1a 通过spark sql 获取hive schema的功能不能用了 报错信息如下
  • 【总结】docker 安装教程

    各操作系统版本下载地址 mac 版 xff1a https download docker com mac linux版 xff1a https download docker com linux win版 xff1a https down
  • InvokeHelper函数的用法

    ActiveX控件的方法和属性操作与生成的C 43 43 类成员函数相关联都是通过InvokeHelper函数的调用来完成的 xff0c InvokeHelper函数的第一个参数是由Component Gallery xff08 控件提供者
  • 【总结】解决dubbo 升级至apache 2.7.18版本发生Zookeeper连接失败问题

    问题描述 最近在做系统的架构升级 xff0c 升级应用dubbo版本号至apache 2 7 18版 xff0c 发生Caused by java lang IllegalStateException Failed to connect w
  • 【总结】hadoop 磁盘满导致集群宕机排查解决

    hadoop 集群因磁盘满了 xff0c 导致服务挂掉 xff0c 甚至有机器宕机 当机器重启后 xff0c 启动nameNode 和 journalNode 有报错 1 启动 Namenode 错误信息 2023 03 27 10 23
  • 【总结】Linux vim编辑文件中文乱码cat正常(亲测有效)

    最近为了测系统的兼容性 xff0c 公司运维装了一台统信UOS arm 64的系统 xff0c 在该操作系统上部署时 xff0c 发现vim 编辑文件中文乱码 xff0c 但是使用cat 查看文件 xff0c 却是正常 网上搜索了一番 xf
  • 【总结】Springboot 从2.0.0升级至2.3.12版本hive使用报错问题解决

    背景 公司springboot 版本终于从老古董2 0 0 release 升到2 3 12版本了 xff0c 应用启动 系统登陆都正常 xff0c 但在回归验证hive时 xff0c spark sql 操作hive相关的功能却用不了 经
  • PCB封装尺寸-0402-0603-0805

    封装尺寸与封装的对应关系 封装尺寸功率电阻耐压值 V0201 1 20W2504021 0mmx0 5mm 1 16W5006031 6mmx0 8mm 1 10W5008052 0mmx1 2mm 1 8W15012063 2mmx1 6
  • SpringCloud五大核心组件使用方法

    目录 SpringCloud各组件简单介绍EurekaFeignRibbonHystrixzuul SpringCloud各组件使用方法前提准备Eureka入门案例1 新建Module2 修改pom文件3 创建 96 application
  • java变量的定义

    JAVA数据类型 对于整型数据 xff0c 通常情况下使用int类型 但是如果表示极大的数据 xff0c 就需要long类型了 xff0c byte和short类型主要用于特定的应用场合 xff0c 例如 xff1a 底层的文件处理或者需要
  • java数据类型转换(强制转换)

    数据类型的转换 xff0c 分为自动转换和强制转换 自动转换是程序在执行过程中 无声 进行的转换 xff0c 不需要提前声明 xff0c 一般是从位数低的类型向位数高的类型转换 xff1b 强制转换则必须在代码中声明 xff0c 转换顺序不
  • 斗鱼直播与熊猫直播竞品分析

    引言 xff1a 目前国内直播平台虽然十分火爆 xff0c 但是直播的市场尚未成熟 xff0c 斗鱼等其他直播平台在利用自己用户的基础一直处在直播平台的主流市场 xff0c 而新晋直播平台开始大肆的宣传和吸引用户 xff0c 最终直播这块市
  • 知乎产品分析|知识社区何去何从

    一 引言 2017 年 2 月 xff0c 知乎月独立用户设备数再次回升 xff0c 相比 1 月上涨了 11 2 xff0c 达到了 1109 万台 1 1 目的 通过对知乎这款产品的分析 xff0c 锻炼自己的思维能力 xff0c 深化
  • 我的vimrc配置文件

    34 vundle begin set nocompatible 34 与vi不一致 filetype off filetype plugin on 34 检测插件 set rtp 43 61 vim bundle vundle 34 载入
  • 以CSDN为例解释尼尔森十大交互原则

    一 状态可见原则 用户在网页上的任何操作 xff0c 不论是单击 滚动还是按下键盘 xff0c 页面应即时给出反馈 即时 是指 xff0c 页面响应时间小于用户能忍受的等待时间 举例 xff1a CSDN上文章底部都会有一个 喜欢 按钮 x
  • 游戏化思维——核心驱动力

    游戏是一个令人着迷 xff0c 并且能够让人沉迷于此的东西 xff0c 而游戏之所以如此迷人 xff0c 不但是游戏的制作精良和剧情引人入胜 除此之外还有些其他原因 xff0c 激励人民玩游戏的原因是 xff1a 游戏能够触及到人性的核心驱
  • 从产品设计到用户设计

    从产品设计到用户设计 一说起产品设计 xff0c 人们往往想到两个方面 感官方面 功能方面 感官方面 xff1a 精心设计的产品能够给用户带来赏心悦目的感觉 xff0c 当然极大部分是属于触感方面 xff08 嗅觉和味觉因为局限问题无法在产

随机推荐

  • 为体验设计——使用第一

    产品设计和用户体验设计有什么不同呢 xff1f 每个产品都是以用户是人类为前提而设计出来的 xff0c 而产品的每一次使用 xff0c 都会产生相应的体验 用户体验设计并完全不等同于产品设计 但是对于一个简单的情况下 xff0c 创建一个良
  • 用户体验和网站

    用户体验对于所有的产品和服务来讲 xff0c 都是至关重要的 现在讨论一种特殊产品的用户体验 xff1a 网站 xff08 这里的 网站 一词包括以内容为主的网站产品和以交互为主的网站应用 xff09 在网站上 xff0c 用户体验比任何一
  • .net C# 堆 栈 垃圾回收 GC

    NET C NET C NET C NET C NET C NET C NET C 栈 堆 垃圾回收 GC 1 尽管在 NET framework下我们并不需要担心内存管理和垃圾回收 Garbage Collection xff0c 但是我
  • 值类型总是分配在栈上吗?

    不是 xff0c 比如下面三种情况 xff1a 1 引用类型内部的变量 xff0c 即使是值类型 xff0c 也会随同引用类型的实例一起被分配在堆上 2 对于值类型的数组 xff0c 由于数组是引用类型 xff0c 数组内的值类型元素 xf
  • .NET垃圾回收机制 转

    在 NET Framework中 内存中的资源 即所有二进制信息的集合 分为 34 托管资源 34 和 34 非托管资源 34 托管资源必须接受 NET Framework的CLR 通用语言运行时 的管理 诸如内存类型安全性检查 而非托管资
  • Spring Boot 升级所遇到的坑们s 1.5.x升级到2.1.x

    下面总结从Spring Boot 1 5 15 Release版本升级到2 1 1 Release版本所遇到的问题 xff0c 因为每个项目所依赖库的多少不同 xff0c 所以有些我列出的问题可能你的产品没有遇到 xff0c 或者你的问题我
  • A simple Binary Search Tree written in C# and the case at the bottom

    Introduction In Computer Science a binary tree is a hierarchical structure of nodes each node referencing at most to two
  • vim学习资源

    http www vimer cn http coolshell cn http vimcdoc sourceforge net doc quickfix html 就这两个资源用好了 xff0c 就足够了
  • asp.net 获取客户端IP地址

    private string GetClientIP string result 61 HttpContext Current Request ServerVariables 34 HTTP X FORWARDED FOR 34 if nu
  • log4net 使用示例 asp.net + winform

    log4net 是 apache org 在 log4j的基础上推出的针对 NET程序的开源的日志组件 log4net目前的最新版本是 1 2 10 xff0c log4net支持的日志保存方式 xff0c 可谓丰富之极 xff0c 包括
  • Log4net 配置写不同文件

    以下配置了二种写文件 xff0c 第一种根据日期写文件yyyyMMdd txt xff0c 第二种是写固定文件login txt 1 xff0c 下载Log4net组件 xff1a http logging apache org log4n
  • Log4Net使用详解(续)

    说明自从上次在2008年在博客上发表过有关log4net的用法介绍文章之后 xff08 网址 xff1a http blog csdn net zhoufoxcn archive 2008 03 26 2220533 aspx xff09
  • httpWebRequest 通过代理 连接网络

    via Proxy connect the website WebProxy myProxy 61 new WebProxy myProxy Address 61 new Uri 34 http XXXXXXX com 9000 34 my
  • 使用windbg排查一个内存溢出的问题

    发现有一个服务占用大量的内存 奇怪的是服务一开始的时候只占用100M左右内存 xff0c 随着时间推移越来越大 xff0c 最后导致服务器内存吃紧 这可以算是一种内存泄漏的问题 xff0c 之所以标题不说是内存泄漏 xff0c 最后就会知道
  • 用WinDbg排除“内存溢出”故障

    文章摘要 内存溢出有时像 魔鬼 一样缠绕着我们的程序 xff0c 用一般的方法不易驱除 主要难点是搜查 魔鬼 的藏身之处 这时 xff0c 我们可以请来 WinDbg xff08 Debugging Tools for Windows xf
  • windbg 的常用命令--强大!常用!

    如何手工抓取dump文件 在生产环境下进行故障诊断时 xff0c 为了不终止正在运行的服务或应用程序 xff0c 有两种方式可以对正在运行的服务或应用程序的进程进行分析和调试 首先一种比较直观简洁的方式就是用WinDbg等调试器直接atta
  • 用Windbg调试.NET程序的资源泄漏

    在产品环境中的一个Windows服务出现了异常情况 这是一个基于WCF的 NET程序 xff0c 它向网络应用 xff08 Web Application xff09 提供WCF服务 xff0c 同时也调用其他WCF服务以完成任务 突然 x
  • 堆与栈的区别【收藏】

    网上看到的两篇关于 堆与栈 的介绍 xff0c 讲的比较清楚 1 堆和栈的区别 原地址 xff1a http blog csdn net goingup archive 2006 03 07 618309 aspx 在bbs上 xff0c
  • vimdiff 使用笔记

    vimdiff 是建立在 diff 命令之上的 启动方法 xff1a vimdiff file left file right 或者 vim d file left file right 只在某一文件中存在的行的背景色被设置为蓝色 xff0
  • 负数的二进制表示方法 原码、反码、补码

    6 5 原码 反码 补码 结束了各种进制的转换 xff0c 我们来谈谈另一个话题 xff1a 原码 反码 补码 我们已经知道计算机中 xff0c 所有数据最终都是使用二进制数表达 我们也已经学会如何将一个10进制数如何转换为二进制数 不过