原码、反码、补码问题以及-32768~+32767问题

1. 原码、反码、补码问题

 在C语言中,对于有符号整形数,原码的最高位为符号位,符号位为0表示正数,符号位为1表示负数,仅用原码来表示数是没有问题的,但进行加减时会出现问题。因此,为了解决正数与负数的加减问题,引出了反码;而反码有正负零问题,因此进一步引出了补码。
正、负数反码和补码的计算方法:
1.对于正数,其原码、反码、补码都相同
2.对于负数,
  反码:在原码的基础上,符号位不变,其余位取反。
  补码:在补码的基础上加一。
  由补码计算原码:求补码的补码即可,即对补码先取反码再取+1。

2.-32768~+32767问题

 由于-32768~+32767的数值范围较广,为方便展示,此处举-8 ~ +7 的例子作为展示,两者本质相同。
对于一个有符号的4位有整形数,按常规思路写出其中所有数的原码以及补码:
  +7: 0111 0111
  +6: 0110 0110
  +5: 0101 0101
  +4: 0100 0100
  +3: 0011 0011
  +2: 0010 0010
  +1: 0001 0001
  +0: 0000 0000
  -0: 1000 0000
  -1: 1001 1111
  -2: 1010 1110
  -3: 1011 1101
  -4: 1100 1100
  -5: 1101 1011
  -6: 1110 1010
  -7: 1111 1001
观察上表可知,补码0000对应的原码有两个:正0和负0,而按理来说,补码和原码应该是一 一对应的关系。同时,补码列中缺少了一个1000。为了解决上述问题,人为规定,将1000这个补码分配给-8。更改以后,补码列表变为:
  +7: 0111 0111
  +6: 0110 0110
  +5: 0101 0101
  +4: 0100 0100
  +3: 0011 0011
  +2: 0010 0010
  +1: 0001 0001
  +0: 0000 0000
  -1: 1001 1111
  -2: 1010 1110
  -3: 1011 1101
  -4: 1100 1100
  -5: 1101 1011
  -6: 1110 1010
  -7: 1111 1001
  -8: 1000 1000
满足补码和原码的一 一对应关系,同时,补码从上到下是连续变化的。

原码、反码、补码问题以及-32768~+32767问题相关推荐

  1. C语言基础(二)—— 常量与变量、数据类型、进位制、关键字、原码反码补码、限定符、字符串格式化输入输出

    1. 常量与变量 1.1 关键字 1.2 数据类型 数据类型的作用:编译器预算对象(变量)分配的内存空间大小. 1.3 常量 在程序运行过程中,其值不能被改变的量 常量一般出现在表达式或赋值语句中 整 ...

  2. 【程序员必修数学课】-基础思想篇-二进制-原码反码补码的数学论证

    二进制计数法&原码&反码&补码 Ⅰ 前言 Ⅱ 二进制计数法 A. 什么是二进制计数法? B. 为什么要使用二进制? C. 二进制的位运算 D. 符号位 E. 溢出 Ⅲ 原码&a ...

  3. 关于计算机中 原码, 反码, 补码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  4. 原码, 反码, 补码, 移码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  5. 关于 原码 反码 补码 位运算

    二进制 原码:最高位为符号位,0为正  1为负 正数的原码 反码 补码 都是相同的 反码:负数的反码为原码符号位不变 其它对应变化(1变0 0变1) 补码:等于 反码+1 3^-3 =? 运算过程 - ...

  6. 10.原码 反码 补码

    +7的原码:0000 0111 -7的原码:1000 0111   第一位0代表正数,1代表负数,第一位为符号位 +7的反码:0000 0111 正数反码和原码一样 -7的反码:1111 1000   ...

  7. java进制原码_Java 一一 进制、原码 反码 补码、移位操作

    进制 二进制 和 十进制 相互转换 十进制 和 十六进制 相互转换 原码,反码,补码 原码.反码.补码: 在计算机内, 有符号数有三种表示法: 原码, 反码, 补码. 所有的数据的运算都是采用 补码 ...

  8. 大端 小端 原码 反码 补码 及内存中的表现

    小端 和 大端 在内存中存储时,都是从内存的低地址往高地址存,即0x00000000 -> 0xffffffff 以汉字 "严"为例,Unicode码是4E25,需要两个字节 ...

  9. 原码 反码 补码 详解

    一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放 ...

  10. python二进制反码例题_python中的进制转换和原码,反码,补码

    python中的进制转换和原码,反码,补码 计算机文件大小单位 b = bit 位(比特) B = Byte 字节 1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b 1KB ...

最新文章

  1. Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)
  2. Random类(Java中的随机类)
  3. view controller lifecycle discussion - beforeRendering
  4. Windows部署服务WDS实例
  5. asp.net ViewState详解
  6. 1114. 按序打印
  7. 基于Echarts+HTML5可视化数据大屏展示—大数据管理平台中心(二)
  8. 关于Orchard CMS
  9. dos盘启动计算机,最新万能 DOS 启动盘制作全攻略(软盘+光盘+U盘+硬盘+NTFS+应急实用工具)...
  10. ajax 刷新 保持原位置_JavaEE之Ajax第一课
  11. 光纤耦合角度_一种光纤准直器的耦合找光方法与流程
  12. Linux SendMail发送邮件失败诊断案例(四)
  13. iomega ix2 Android,Lenovo Iomega ix2系统安装
  14. 985硕毕业,面试13家企业,拿7个大厂offer,回顾面试总结
  15. 13个可以激励自己的名言
  16. 养育女孩(成长版)点燃孩子兴趣的火花
  17. 面向对象,类,属性,方法,创建调用属性方法,有参,无参,变量代码示例
  18. EOS智能合约开发(二):EOS创建和管理钱包
  19. Chinese Rings 矩阵快速幂
  20. html5 td上下居中显示,css表格垂直居中怎么设置?

热门文章

  1. java移除json的元素_js实现删除json中指定的元素
  2. 跟我一起学RT-Thread之ARM架构初探
  3. 进程是否采用3d指令的判断
  4. 安卓课程思维导图大全
  5. cas TicketValidationException 未能够识别出目标 ‘ST-1-UxVA37oEE-qN-S0NNZclYXsXxFQSD-20200510PZSQ‘票根
  6. Java中的死锁与活锁
  7. 你能在腾讯问问上发软文吗?
  8. 迪杰斯特拉算法-简单容易理解
  9. 【Luogu_P5465】Dirichlet 前缀和
  10. HDR格式图像的保存与读取+实例