• 原码补码反码


    一、原码

      原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。比如+1的原码是以0开头的:0000 0001,反之-1的原码就是以1开头的:1000 0001

      第一位是符号位,余下7为是数值为。因为第一位是符号位,所以8位二进制数的取值范围是:[1111 1111,0111 1111]即[-127,127]

      原码也是人类最容易理解的和计算的表示方式

    二、反码

      反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。在计算机内,定点数有3种表示法:原码、反码和补码。

      正数的反码就是他本身

      负数的反码是在其原码的基础上,符号位不变,其余各个位取反

      [+1] = [00000001]原 = [00000001]反

      [-1] = [10000001]原 = [11111110]反

      可见如果一个反码表示的是负数,人脑无法直观的看出来它的数值,通常要将其转换成原码在计算。

    三、补码

      计算机中的有符号数有三种表示方法,即原码反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同 [1]  。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理 [2]  

      补码的表示方法是:  

      正数的补码就是其本身

      负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1(即在反码的基础上+1)

      [+1] = [00000001]原 = [00000001]反 = [00000001]补

      [-1] = [10000001]原 = [11111110]反 = [11111111]补

      对于负数,补码的表示方式也是人脑无法直观看出其数值的,通常也需要转换成原码在计算其数值

      在计算机系统中,数值一律用补码来表示(存储)。主要原因:使用补码,可以讲符号位和其他未统一处理;同时,剑法也可按假发来处理。灵位,两个用补码来表示的数相加时间、,如果最高位(符号位)有进位,则进位被舍弃;补码与原码的转换过程几乎是相同的。

      

      

      

      

  • 相关阅读:
    HDU 1221 Rectangle and Circle 考虑很多情况,good题
    HDU 1223 打表 + 大数
    17984 FFF团的怒火
    17978 倒不了的塔 注意题目
    .. HDU
    17972 Golden gun的巧克力
    9718 整数因子分解(必做) 分治法
    51NOD 1201 整数划分
    Amazon Rekognition 人脸识别
    AWS Config
  • 原文地址:https://www.cnblogs.com/Hdwmsyqdm/p/13223924.html
Copyright © 2020-2023  润新知