zoukankan      html  css  js  c++  java
  • 二进制补码

    在计算机系统中,数值一律用二进制补码进行表示,补码的计算规则是:

    补码 等于 原码按位 取反 再 加 1。

    有符号类型的数值,最高位是符号位,1为负数,0为正数。

    按照补码计算规则,可得 正数的补码等于其原码。

    如:

    char num;

    num = 1;

    如 +1 的原码是 0000 0001 ,补码也是 0000 0001;

    而 - 1 的补码是 1111 1111。

    以下以8位有符号类型的数值来认识一下补码:

    可以看到,当用8位来存储数据时,数据的大小范围是 -128到127。

    可以发现,+127加1后,如果是无符号的,表示的是128,但如果是有符号的,则刚好是-128的补码,再加1,是-127的补码。

    而,-1加+1后,又变为0,回到了表格的起点。

    0 1 2 3 …… 126 127  -128 -127 -126 -2 -1 0 

    可以发现,8位能表示的最大的值加1后 变成8位能表示的最小的值,形成首尾相接的一个环。

    有一个办法可以快速的算出负数的补码:

    -1的补码:0xff(255) = 256 - 1

    -2的补码:0xfe(254) = 256 - 2

    -127的补码:0x81(129) = 256 - 127

    -128的补码:0x80(128) = 256 - 128

    可以发现,负数的补码 = 256 - |负数自身|,当然这只是8位时的情况。

    如果是 n 位的:

    负数的补码 = 2^n -  |负数自身|

  • 相关阅读:
    冒泡排序
    最长回文子串
    两个排序数组的中位数
    Manacher算法解析
    绕过校园网WEB认证_iodine实现
    绕过校园网WEB认证_dns2tcp实现
    ajax跨域请求
    Vue实例生命周期
    组件化应用构建
    表单输入绑定
  • 原文地址:https://www.cnblogs.com/qmlm8844/p/2776089.html
Copyright © 2011-2022 走看看