zoukankan      html  css  js  c++  java
  • 机器数,原码,反码,补码,移码

    |   版权声明:本文为博主原创文章,未经博主允许不得转载。

      在计算机中所有的数据的保存均是用二进制来实现的,而二进制的表示则是一串的0,1组成。而在计算机的表达中有着机

    器数和原码,反码,补码和移码等数据的编码表示方法。其中这些编码的方法称为码制。

     

    (1)、机器数

        各种数据在计算机中的表示的形式称为机器数,其特点是数的符号用0、1来表示。机器数并不能算作真正的数值。

     

    (2)、真值

      机器数对于的实际数值称为该数的真值。也就是带符号的机器数(机器数是不带符号位的);机器数又分为无符号

    数和有符号数两种。无符号数表示正数,在机器数中没有符号位。对于带符号数,机器数的最高位是表示正负两种符号

    的,其中1表式负数,0表示正数。

    1 真值和机器数的区别:(以3为例,总位数为8)
    2 机器数:  00000011   表示机器数3,但是不知道是+3还是-3
    3 真值:    00000011   表示+3
    4          10000011   表示-3

     

    (3)、原码

      原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制,如下:

    1 1的原码:
    2 
    4 [+1]原 = 00000001
    5 
    7 [-1]原 = 10000001

    (4)、反码

      反码有两种情况:

          》、当原码为正数时,其反码就等于正数的原码(+原码 = +反码)

               》、当原码为负数时,其反码就等于正数的原码按位取反,但是最高位的符号位不变

    1 1的反码:
    2 
    3 [+1]反 = [+1]原 = 00000001
    4 
    5 [-1]反 = 11111110

      如果一个反码表示的是负数, 要将其转换成原码再计算它真正的数值,否则是不知道它表示是什么数值

     

    (5)、补码

      补码有两种情况:

                  》:当原码为正数时,其补码也等于正数的原码(+原 = +反 = +补)

                  》:当原码为负数时,其补码等于正数的原码按位取反,符号位不变,最后在在末尾加1(及在反码的末尾加1)

    1 [+1]原 = 00000001 =  00000001  =  00000001 
    2 
    3 [-1]原  = 10000001 =  11111110  =  11111111

      负数的补码和反码一样,需要转换为原码才能分辨其数值

    (6)、 移码(又叫增码)是符号位取反的补码:

     1 [+1]移 = 10000001 [-1]移 = 01111111 

  • 相关阅读:
    Cocos2d-x之绘制圆形
    Cocos2d-x之绘制填充矩形
    Cocos2d-x之绘制矩形
    Cocos2d-x之绘图API说明
    cocos2d-x之监听手机的物理按键
    cocos2d-x之加速度传感器
    cocos2d-x之多点触摸事件
    cocos2d-x之事件传递(onTouchBegan的返回值的作用)
    pickle
    配置文件
  • 原文地址:https://www.cnblogs.com/geore/p/5792543.html
Copyright © 2011-2022 走看看