反码,没有用途;补码,有把减法转换成加法的用途。
----
日常生活中,大家都知道,把时针倒拨20分钟,和正拨40分钟,效果是相同的。
-20,就对应了 +40。
怎么算的?用 60 减去 -20 的绝对值,即可。
----
另外,100 以内的数字,减去1,和加上 99,效果也是相同的。
比如,27 - 1 = 26,  27 + 99 = (1) 26。
即 -1,就对应了 +99。
怎么算的?用 100 减去 -1 的绝对值,即可。
----
这些,就体现了《模》与《补数》的概念。
利用补数,就可把减法,转换成加法。如果是正数,直接做加法就行,不用费事。
----
对于负数,要用《模》减去这个负数的绝对值,求出《补数》之后再用于计算。
对于正数,就不用变了。
----
八位二进制数字的《模》是 1 0000 0000,即 256。
-5 的补数就是:256 - 5 = 251。
----
把 5、251,都写成二进制数,这就称为了《码》,此时就可以看出它们有《求反加一》的关系。
即把 5 = 0000 0101,求反加一,就有:1111 1011,这就是 -5 的补码,这也就是 251。
----
八位时,补码定义式如下:
[X]补 = X ;0 =< X =< 127
[X]补 = 256 - | X | ;128 =< X < 0
严谨一些的书上都有这个式子。
----
补码完全可以用十进制数表示,编程时,就写十进制数,保证都是正确的。
补码,不必变成二进制,也就不用《求反加一》了,书上讲的那些步骤,都是垃圾。

// 附上代码验证

 1 public void demo10(){
 2         byte b1 = (byte)-2;
 3         byte b2 = (byte)254;
 4         // 证明了 -2 的补码,就是正数254
 5         // 254 = 256(byte的模)-2(-2的绝对值)
 6         System.out.println(Integer.toBinaryString(b1));
 7         System.out.println(Integer.toBinaryString(b2));
 8         System.out.println(b1 == b2);
 9         //11111111111111111111111111111110
10         //11111111111111111111111111111110
11         // true
12
13         int i1 = -199;
14         int i2 = (Integer.MAX_VALUE+1)*2 - 199; // 其中 int 4 个 byte的模为(Integer.MAX_VALUE+1)*2 即2的32次方
15         System.out.println(Integer.toBinaryString(i1));
16         System.out.println(Integer.toBinaryString(i2));
17         System.out.println(i1 == i2);
18         //11111111111111111111111100111001
19         //11111111111111111111111100111001
20         //true
21     }

转载于:https://www.cnblogs.com/jianglong-liang/p/3322425.html

什么是补码-网上找到的,非原创相关推荐

  1. 如何在网上找到并下载你想要的软件

    此文谨献给那些还不会熟练的在网上找到正确软件并下载的人. 好像对于好多人来说从网上找到一个非假冒非病毒木马之类的软件还是有点困难.我今天简单的吧方法介绍一下,主要为了我可爱的学弟学妹们别再为这些小事烦 ...

  2. css总结-笔记--部分非原创--属于资源整合

    文章目录 一.css基础教程 1.选择器等级 1.1层叠次序 1.2css三大特性 层叠性原则 继承性 优先级 2.基础语法 2.1声明 2.2值的写法和单位 2.2.1颜色的几种写法(用红色举例) ...

  3. Java 表达式解析(非原创)

    因项目需要,在网上找来一套表达式解析方法,由于原来的方法太过于零散,不利于移植,现在整理在同一文件内: 文件中包含5个内部类,源码如下: 1 import java.util.ArrayList; 2 ...

  4. (淘宝无限适配)移动手机端rem布局详解(转载非原创)

    https://www.cnblogs.com/well-nice/p/5509589.html (淘宝无限适配)手机端rem布局详解(转载非原创) 从网易与淘宝的font-size思考前端设计稿与工 ...

  5. 45种攻入后台的方法(非原创,来自伟大的网络)

    45种攻入后台的方法(非原创,来自伟大的网络) 1.到Google搜索,site:cq.cn inurl:asp 2.到Google,搜索一些关键字,edit.asp? 韩国肉鸡为多,多数为MSSQL ...

  6. 分享网上找到的一个中国象棋源码

    代码的结构挺好,mvc模式的,给大家分享出来 原创不易,转载请注明出处:分享网上找到的一个中国象棋源码 部分代码 Controller.java package com.zuidaima.chess. ...

  7. 青龙羊毛——旅游链(搬运,非原创)

    大佬叫写的毛,不知道有啥子有,自己慢慢玩吧! 码子 大佬码子→尊重知识 菜鸡码子→感谢支持 这次没人怀疑码子真假了吧? 脚本 ql raw https://gitee.com/soy-tool/app ...

  8. 青龙羊毛——东方头条(搬砖,非原创)

    改版公告--新青龙羊毛 1.东方头条 软件自己去找,不放邀请链接! 作者码子:003584319 我的码子:003170160(别填我码子了,刚注册就黑了!) 2.脚本 宝箱 https://raw. ...

  9. 青龙羊毛——杀猪盘(搬砖,非原创)

    青龙羊毛改版第一更,杀猪盘合集! 改版公告--新青龙羊毛 1.鑫广 和亿享云差不多的东西,自己看! 2.脚本 https://gitee.com/gossh520/script/raw/master/ ...

最新文章

  1. 联想g400从u盘启动计算机,联想g400u盘装系统的方法
  2. ActiveX开发知多少?
  3. 用VS2010构建MASM的编程环境
  4. php7-internal 7.7 zval的操作
  5. Java程序员需要掌握的计算机底层知识(二):操作系统、内核、用户态与内核态、系统调用的执行过程
  6. 华为手机打字声音怎么开启_华为手机这5个超实用小功能,记得要开启,谁用都说好...
  7. c++ double 只输出五位_C/C++编程笔记:C语言入门知识点(一),请收藏C语言最全笔记...
  8. SpringBoot配置详解
  9. PHP-Open Flash Chart注意事项
  10. VB如何根据窗口标题获得进程名称
  11. andorid简单计算器java源码_Android开发实现的简单计算器功能【附完整demo源码下载】...
  12. rational rose的下载和安装教程
  13. 程序员去美国工作:奋斗在加州
  14. coturn NAT穿透服务器搭建
  15. windows10 卓越性能模式
  16. 梯度消失、梯度爆炸产生的原因
  17. 互联网日报 | 字节跳动发布独立教育品牌“大力教育”;哈啰出行试水网约车;京东“好房京选”线下品牌落地...
  18. [Maven实战-许晓斌]-[第二章]-2.3安装目录分析
  19. 量化学习:大数据时代的学习方式
  20. 微信公众号推文各标签含义

热门文章

  1. html源码蔡,html基础代码详解
  2. n皇后问题c语言_用栈解决N皇后问题(C语言)
  3. linux网站权限一直自动关闭,奇妙伞-解决SELinux对网站目录权限控制的不当的问题--网上摘抄集合,记录使用...
  4. android 搜索文件代码怎么写,android学习笔记(5)-一个搜索文件的APP(2)-搜索功能的实现...
  5. 华科计算机专硕英语几,考研考华科计算机考数学几英语几啊,另外考华科数..._考研_帮考网...
  6. 重庆计算机考试准考证打印入口,重庆西南大学计算机等级考试准考证打印入口...
  7. c语言程序与实验系统,C/C ++程序设计学习与实验软件系统v2019 最新版下载_云间下载...
  8. java卡 应用_一种实现多发行方的多应用Java卡的方法与流程
  9. IAR软件中查看代码大小
  10. 单片机ADC采样算法----消抖滤波法