记录

在学习C语言数据范围时了解到了补码的概念,记录一下什么是补码,补码怎么运算的

运算

原文链接:https://www.cnblogs.com/lsgsanxiao/p/5113305.html

补码主要是为了cpu运算器在进行减法运算时避免借位而设立的。

在早期,cpu中的运算器部分,只要实现一个加法器就可以完成四由算术运算。

因为计算机中的数值编码是有限位数的,所以减法实际上相当于加上减数的补码,而乘法是循环的加法,除法是循环的减法。这种思想在数学上叫转化思想,在兵法上与”借刀杀人“、”借尸还魂“的借是“异曲同工”,用牛顿的话叫做“站在巨人的肩上“。

举例说明,以8位的二进制为例,要计算1-1,只要用1加上-1的补码即可。

-1的原码:1000 0001,最高位是符号为,1表示负数,0表示正数。
-1的反码:1111 1110, 按位取反是除符号位以外,其它每个位上的0变成1,1变成0。
-1的补码:1111 1111,在反码的基础上是加上1即为补码。
1-1 = 1+ 1111 1111 = 1 0000 0000 ,因为只有8位的二进制表示方法,此时溢出了,溢出位在硬件上是没法表示的,因此结果还是0.
链接:https://www.cnblogs.com/yf4695/p/9102411.html
对于有符号类型的数据,它的最高位为符号位,正数的符号位是 0 ,负数的符号位是 1
正数的原码、反码、补码都一样
计算机中实际存储的是补码
负数如-15,10001111(原码),11110000(反码,符号位不变,其余为取反),11110001(补码,反码加1);将负数的补码化为原码:先减1,然后符号位不变,其余位取反
负数的原码+补码=00000000
如果只是通过负数的补码求其绝对值,则:将补码全部位取反+1(11110001(-15补码)--->00001110--->00001111)







最新文章

  1. Apache多站点配置及启动失败解决办法
  2. HTK学习2:工具使用
  3. C --gettimeofday===获取某个程序经历的时间
  4. 关于Excel导入导出的用例设计
  5. MouseJack:利用15美元的工具和15行代码控制无线鼠标和键盘
  6. WPF中log4net的用法
  7. RocketMQ常用命令
  8. PTA 06-图3 六度空间 (30分)
  9. 防御SQL注入的方法总结
  10. CSS3 加载进度样式
  11. powershell 生成随机用户信息
  12. 英语曰曰曰No.523
  13. 《Redis入门指南》第2版 读书笔记
  14. PowerShell执行脚本时“系统上禁止运行脚本”问题解决
  15. 抓包工具tcpdump用法说明
  16. servlet 会话技术
  17. Linux 系统开启随机端口数量 调优
  18. cdnbest日志分析显示404的原因
  19. 互评beta版本 - hello word!【空天猎】
  20. ctex2.9.2输出中文

热门文章

  1. Mysql性能优化专栏
  2. 架构师基础技能-搭建gitLab
  3. Java IO流 BufferedInputStream、BufferedOutputStream的基本使用
  4. html 05-HTML标签图文详解(二)
  5. [打基础]OI/ACM基本功&一些小功能的实现&一些错误(持续更新)
  6. [日常摸鱼]bzoj2038[2009国家集训队]小Z的袜子-莫队算法
  7. [日常摸鱼]bzoj2463 [中山市选2009]谁能赢呢?
  8. inotifywait命令如何监控文件变化?
  9. C盘满了删除C盘文件
  10. 【磁盘/文件系统】第二篇:标准磁盘分区流程针对fdisk(硬盘容量小于2T且分区数不能大于15个分区)