zoukankan      html  css  js  c++  java
  • 原码,反码和补码学习报告

            放假这几天,重新学习了原码反码和补码的相关知识。对原码反码和补码有了重新的认识。所以写了这篇博客,作以总结。

            学习原码反码补码时主要是看了叶子秋前辈的博客(http://www.cnblogs.com/zhangziqiu/ )。对于原码反码补码的知识写的非常详细,也引用了很多例子。通过前辈的博客,了解到一个叫做机器数的东西,就是我们常用的二进制数,比如在8位二进制中,数字1的机器数就是00000001。通过真值,明白一长串二进制符并不完全代表数字。开头的01表示这个·数据的正负。

           原码,就是符号位加上真值的绝对值, 用第一位表示符号, 其余位表示数值. 如果是8位二进制“+1”表示为00000001,“-1”表示为10000001。这样得出原码的取值范围是[-127,127]。但原码有一个问题。符号位参与运算会使整个数值发生错误会使1-1=-1.所以科学家开始思考,试图找到一种正确的方法,反码就出现了。

           反码,顾名思义,把原码反过来。因为机器数只有01,用所有的1代替原码中的零,这样“-1”就可以表示为11111110.同样,反码也有自身的缺陷,在运算中会出现+0,-0的现象。我们都知道0只有一个,没有正负之分。为了这一个看似小,却也十分重要的问题。补码应运而生。

          补码,也很好理解,就是补充。在反码的基础上进行补充,进行+1.这样一做,就完美的避免了+-0的问题。这也相当于用-128代替-0,因此补码的范围就是[-128,127].相比于原码和补码,可以储存的数据更多,减少了很多不需要的问题。也正是因为计算机的二进制运算,才会产生反码,补码这种针对于负数的解决方法。从而使得数据运算可以更加准确。

  • 相关阅读:
    Redis为什么使用单进程单线程方式也这么快
    高性能IO模型浅析
    计算机基础知识_硬件知识
    计算机基础知识_进制转化
    计算机基础知识
    C语言_第一讲_C语言入门
    C语言_第二讲_规范以及常用数据类型
    COM_第四讲_保存GUID_优化使用代码
    4.性能下降原因和常见的Join查询
    3.MySQL的架构介绍
  • 原文地址:https://www.cnblogs.com/Excusezuo/p/9744575.html
Copyright © 2011-2022 走看看