计算机为了节省资源通常把减法当作加法运算,例如 90-100 当成90+(-100)。
为了实现这个功能,计算机进行补码运算。

1、正数的补码是源码不变,例如:
5 源码 00000101
补码 00000101
2、负数的补码是源码的符号位不变,其余为取反再加1得到,例如:
-6 源码 10000110
符号位不变其余取反 11111001
再加1得到补码:11111010

那么现在进行加法操作:5-6 等同于 5+(-6)
补码运算:00000101 + 11111010 = 11111111 现在得到补码的计算结果,可以看到符号位为1,那么结果是负的,负的就要进行反补码再加1,那么得到数字10000000,再加1等于10000001 = -1,那么结果出来了,等于-1

那么现在进行加法操作:5-4 等同于 5+(-4)
补码运算:00000101 +11111100 =100000001 可以看到 得到一个9位数的2进制代码,那么多余的一位数最高位去掉得到8位为:00000001 = 1

可以得到结论:如果结果为正数那么不需要进行补码运算的逆运算。如果结果为负数,那么需要进行补码运算的逆运算。

C语言如何进行补码运算并举例说明相关推荐

  1. c语言10以内位运算,C语言基础知识--位运算

    1.原码,反码,补码: (1)在n位的机器数中,最高位为符号位,该位为零表示为正,为一表示为负:其余n-1位为数值位,各位的值可为零或一.当真值为正时,原码.反码.补码数值位 完全相同:当真值为负时, ...

  2. c语言复合运算,C语言中复合赋值运算,表达式等知识(DOC可编).doc

    C语言中复合赋值运算,表达式等知识(DOC可编).doc 3.1复合赋值运算 算术运算符"+ - * / %"和赋值运算符"="结合起来,形成复合赋值运算符.如 ...

  3. c语言复合赋值表达式题目,C语言中复合赋值运算,表达式等知识.doc

    C语言中复合赋值运算,表达式等知识.doc 3.1复合赋值运算 算术运算符"+ - * / %"和赋值运算符"="结合起来,形成复合赋值运算符.如下所示:+= ...

  4. C 语言中负数移位运算讲解

    C 语言中负数移位运算讲解 "<<".">>"为移位运算符. "<<"为左移位运算符,即数据字节中的每个 ...

  5. c语言补码计算方法,探讨C语言学习中补码计算方法.doc

    探讨C语言学习中补码计算方法 探讨C语言学习中补码计算方法 摘要:补码是C语言学习中的一个重点和难点,如何能够快速准确地计算出各个数的补码值得我们探讨.本文从补码的意义入手,采用逆向逻辑思维,分别提出 ...

  6. C语言中的移位运算乘法,C语言中 移位操作运算

    移位规律: 左移时总是移位和补零.右移时无符号数是移位和补零,此时称为逻辑右移;而有符号数大多数情况下是移位后补最左边的位(也就是补最高有效位),移几位就补几位,此时称为算术右移.(其实跟扩展逻辑一样 ...

  7. 假设我们在对有符号值使用补码运算的32位机器人运行代码。对于有符号值使用的是算术右移,而对于无符号值使用的是逻辑右移

    假设我们在对有符号值使用补码运算的32位机器人运行代码.对于有符号值使用的是算术右移,而对于无符号值使用的是逻辑右移.变量的声明和初始化如下: int x = foo(); //任意值 int y = ...

  8. Linux嵌入式学习---C语言之数据类型及运算

    Linux嵌入式学习---C语言之数据类型及运算 一.Linux下c语言概述 1.1C语言特点 1.2c语言是结构化的语言 1.3c是模块化的语言 1.4程序可移植性好 1.5c语言运算符丰富,代码效 ...

  9. C语言中的位运算和逻辑运算

    位运算 C语言中的位运算包括与(&),或(|),亦或(^),非(~). 下面的代码包扩了这些基本运算,还有一个两个数的交换(不用第三个数). #include<stdio.h> # ...

最新文章

  1. 谷歌新发布的分布式数据库服务,是要打破CAP定理了吗?
  2. bad cpu type in executable_【简讯】Intel将每5年重新开发一次CPU架构;华为EMUI 11曝光…...
  3. Codeforces Round #521 (Div. 3)
  4. MSP430F5529 DriverLib 库函数I2C驱动OLED屏幕
  5. CodeForces - 540D Bad Luck Island —— 求概率
  6. 人体轮廓_人体艺术:赏世界著名的女人体油画:身体轮廓
  7. 【IT】Asp.Net MVC
  8. python在信号处理的应用_Python和信号处理程序
  9. Configure Log Shipping
  10. linux中Python3 引入CV2报错
  11. 多线程编程中条件变量和虚假唤醒(spurious wakeup)的讨论
  12. Kubernetes Pod调度策略
  13. webgl图库研究(包括BabylonJS、Threejs、LayaboxJS、SceneJS、ThingJS等框架的特性、适用范围、支持格式、优缺点、相关网址)
  14. 荷兰版《口袋妖怪GO》:不找小精灵,找免费啤酒!
  15. 小米12S和红米K50至尊版哪个好
  16. 收录拒绝指定ip请求黑名单lua脚本、拒绝ip频次请求的lua脚本
  17. (python)基于GUI编写摄氏度转华氏度
  18. 机器学习-*-K均值聚类及代码实现
  19. 天威诚信受邀参加第二届GIEC互联网文娱数字创新峰会
  20. 笔记本可以跑虚拟机吗_什么笔记本跑虚拟机不卡?

热门文章

  1. 在线音频、视频、图片测试链接
  2. Robomaster基于传统算法的视觉识别教程
  3. DuplicateHandle 函数的使用----翻译
  4. SQL ODER BY 多个字段
  5. Oracle oder by 的汉字排序
  6. Spark系列之Spark应用程序运行机制
  7. CentOS 5.5 安装SCST-FCST中的内核编译错误
  8. Bootstrap栅格系统 显示当前屏幕大小和种类
  9. 【程序人生】回忆职业生涯(五)文章千古事——回忆写作经历
  10. 2款私藏已久的宝藏软件,每一款都是心头之爱