• 再次复习原码反码补码 有感


    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,其他的位数也是这个道理;

  • 相关阅读:
    Python 用 matplotlib 中的 plot 画图
    python--serial串口通信
    verilog,vhdl,bdf文件一起综合
    项目小笔记2--qt designer 修改字体,部件拖入layout,引用time模块延时,正则表达式判断输入,进制转换,部件固定大小,graphics view显示图片,消息提示框使用
    虚拟环境下通过pyinstaller 打包
    FPGA--IIC通信
    FPGA--SPI通信
    verilog 语法
    【C_Language】---队列和栈的C程序实现
    【C_Language】---C文件学习
  • 原文地址:https://www.cnblogs.com/xlblog/p/12873085.html
Copyright © 2020-2023  润新知