zoukankan      html  css  js  c++  java
  • 再次复习原码反码补码 有感

    java 中byte一个字节,8位,所能表示的数的范围 是 -128~127,为什么呢?正常来说应该是-127 ~  127 ,有一位符号位才合理,带着疑问进入复习;

    1:计算机中所有操作的是操作数字的补码;

    定义:

      正数的,原码,反码,补码都是本身,例 4(原码)是 0000 0100  ;4(反码)0000 0100  ; 4(补码)0000 0100

      负数的   原码,就是平时自己用二进制直接表示的形式(第一位符号位),例如-4(原码) 是1000 0100,通俗易懂,第一位1代表这是个负数,后面的就代表是个4,合起来就是个-4,这里强调的是 负数的原码 就是我们能直接读出来的这种形式;

      负数的反码,原码除符号位取反,用途来求补码的;例如 例如-4(返码) 是1111 1011;

      负数的补码:

    1:通过上面的反码 ,直接加1;例如 例如-4(补码) 是1111 1100;

    2:负数的 补码 就是其正数的 原码 全部取反 加1;例如 4(原码)是 0000 0100  - -》1111 1011 - -》1111 1100;

    2:8位在计算机中表示的范围是(补码):

    表示的正数 ,0000 0001 ~ 0111 1111 代表 1~(2^7)-1

    表示的负数 -127~-1 也就是求其补码,通过上面两个方式

    -127(补码)=  --》127( 原码)= 0111 1111 -->(全部取反)1000 0000- ->(加1)1000 0001

    -1(补码)=  --》1( 原码)=0000 0001  -->(全部取反)1111 1110- ->(加1)1111 1111

     -127~-1 对应的补码是 1000 0001~1111 1111 

    再加上谜之尴尬的 0  --》 0000 0000 还有一种表现1000 0000,肯定只取一种,往下看; 

    合起来就是   1000 0001~0111 1111 也就是正常理解的 -127 ~127

    但是 聪明的设计者 发现 还有 1000 0000 没有利用 ,其实就是 -128的 补码,-128 = -127+ (-1)= 1000 0001(补)+1111 1111 (补)= 1,1000 0000多了一位去掉, = 1000 0000(补)转化成 原码 减一再除符号位取反 还是1000 000(原),故用1000 0000来表示-128

    所以8位在计算机中 表示的范围是 -128 ~ 127,其他的位数也是这个道理;

  • 相关阅读:
    ASP.Net MVC Session和Cookies的简单使用
    MVC基础知识点
    MVC中路由配置
    MVC Controller接受ajax post传输的List<Entity>数据
    《大道至简》第五章读后感
    字符串课后作业
    《大道至简》第四章读后感
    类和对象课后作业
    《大道至简》第三章读后感
    java 语言基础作业
  • 原文地址:https://www.cnblogs.com/xlblog/p/12873085.html
Copyright © 2011-2022 走看看