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].相比于原码和补码,可以储存的数据更多,减少了很多不需要的问题。也正是因为计算机的二进制运算,才会产生反码,补码这种针对于负数的解决方法。从而使得数据运算可以更加准确。

  • 相关阅读:
    LeetCode——面试题57
    翻译——5_Summary, Conclusion and Discussion
    LeetCode——114. 二叉树展开为链表
    LeetCode——1103. 分糖果 II
    LeetCode——337. 打家劫舍 III
    LeetCode——994. 腐烂的橘子
    Python——潜在会员用户预测
    Vue中div高度自适应
    webpack中使用vue-resource
    Mint UI组件库 和 Mui
  • 原文地址:https://www.cnblogs.com/Excusezuo/p/9744575.html
Copyright © 2011-2022 走看看