zoukankan      html  css  js  c++  java
  • Java中正负数的存储方式-正码 反码和补码

    Java中正负数的存储方式-正码 反码和补码

    正码

    我们以int 为例,一个int占用4个byte,32bits

    0 存在内存上为
    00000000 00000000 00000000 00000000

    11 存在内存上为
    00000000 00000000 00000000 00001011

    反码

    逐位取反,就得到一个对应的反码

    以11为例

    正码: 00000000 00000000 00000000 00001011

    反码: 11111111 11111111 11111111 11110100

    补码

    在补码的基础上再加1,就可以得到补码。

    同样以11为例

    正码: 00000000 00000000 00000000 00001011

    反码: 11111111 11111111 11111111 11110100

    补码: 11111111 11111111 11111111 11110101

    此时候就可得到-11在内存上的表示方式(11111111 11111111 11111111 11110101)

    如果要知道某个二进制的负数实际上是多少(最高位为1)

    以0xFFFFFFFF为例子

    补码: 11111111 11111111 11111111 11111111

    反码: 11111111 11111111 11111111 11111110

    正码: 00000000 00000000 00000000 00000001

    正码为1,所以0xFFFFFFFF (11111111 11111111 11111111 11111111)表示-1.

    这么做的原因

    这是因为底层硬件对数据做运算的时候,只有加数器可用,也就是只能直接把数据拿来相加,通过将负数用这种方式来表达,就可以直接通过对二进制码相加实现对数据的加减运算。

    以 -11+5 为例子

    -11: 11111111 11111111 11111111 11110101

    +5 : 00000000 00000000 00000000 00000101

    -6 : 11111111 11111111 11111111 11111010

    反码: 11111111 11111111 11111111 11111001

    正码: 00000000 00000000 00000000 00000110

  • 相关阅读:
    CSS3 target伪类简介
    不用position,让div垂直居中
    css3 在线编辑工具 连兼容都写好了
    a标签伪类的顺序
    oncopy和onpaste
    【leetcode】1523. Count Odd Numbers in an Interval Range
    【leetcode】1518. Water Bottles
    【leetcode】1514. Path with Maximum Probability
    【leetcode】1513. Number of Substrings With Only 1s
    【leetcode】1512. Number of Good Pairs
  • 原文地址:https://www.cnblogs.com/Pikzas/p/12167569.html
Copyright © 2011-2022 走看看