zoukankan      html  css  js  c++  java
  • 原码、补码、反码

       

    反码、补码跟原码这几个概念:

    (1)数值数据的表示 
             们把一个数在计算机内被表示的二进制形式称为机器数,该数称为这个机器数的真值。机器数有固定的位数,具体是多少位与机器有关,通常是8位或16位。机器数把真值的符号数字化,通常用最高位表示符号,0表示正,1表示负。例如,假设机器数为8位,最高位是符号位,那么在定点整数的情况下,00101110和10010011的真值分别为十进制数+46和-19。 
       2)原码: 
        一个整数的原码是指:符号位用0或1表示,0表示正,1表示负,数值部分就是该整数的绝对值的二进制表示。 
    例如:假设机器数的位数是8,那么:[+17]原=00010001 [-39]原=10100111
    值得注意的是,由于所以数0的原码不唯一,有“正零”和“负零”之分。 
       (3)反码 
         在反码的表示中,正数的表示方法与原码相同;负数的反码是把其原码除符号位以外的各位取反(即0变1,1变0)。通常,用[X]反表示X的反码。例如: 
    [+45]反 = [+45]原 = 00101101
    [-32]原 = 10100000
    [-32]反 = 11011111
       (4)补码 
         在补码的表示中,正数的表示方法与原码相同;负数的补码在其反码的最低有效位上加1。通常用[X]补表示X的补码。例如: 
    [+14]补 = 10100100
    [-36]反 = 11011011
    [-36]补 = 11011100 

       一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。比如,十进制中的数 +2 ,计算机字长为8位,转换成二进制就是[00000010]。如果是 -2 ,就是 [10000010] 。因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 [10000010],其最高位1代表负,其真正数值是 -2 而不是形式值130([10000010]转换成十进制等于130)。所以将带符号位的机器数对应的真正数值称为机器数的真值。

  • 相关阅读:
    Android中对同一个TextView设置不同字体样式
    C++之new和malloc区别
    cocos2dx 在android平台打开文件问题
    基于物联网操作系统HelloX的智慧家庭体系架构
    密码学:SHA1加密算法详解
    Android中最简单的分享功能
    Android设置ProgressBar的前景和背景及其在多线程中的刷新
    【有明信息】虚实之间 ---关于企业架构是与非的探讨
    5.1.1 读取Redis 数据
    hdr(host), hdr_beg(host) , path_beg
  • 原文地址:https://www.cnblogs.com/lishengming00/p/9753496.html
Copyright © 2011-2022 走看看