zoukankan      html  css  js  c++  java
  • java中的负数的问题

    在计算机中是使用二制数中的最高位表示来正负。 二进制的储存中都是用的补码,正数的原码、反码和补码相同,负数的原码是最高位为1,反码最高位不变,其余各位取反,补码为其反码+1(重要!!)

    首先得知道最高位是哪一位?1个字节的类型,如字符类型,最高位是第7位,2个字节的数,最高位是第15位,4个字节的数,最高位是第31位。

    不同长度的数值类型,其最高位也就不同,但总是最左边的那位(如下示意)。

    字符类型固定是1个字节,所以最高位总是第7位。 (红色为最高位) 单字节数: 1111 1111  双字节数: 1111 1111 1111 1111  四字节数: 1111 1111 1111 1111 1111 1111 1111 1111  当我们指定一个数量是无符号类型时,那么其最高位的1或0,和其它位一样,用来表示该数的大小。  当我们指定一个数量是有符号类型时,此时,最高数称为“符号位”。为1时,表示该数为负值,为0时表示为正值

    问:6的反码为什么是-7?

    答:
    java整型是32bit运算

    6的二进制是:
    0000 0000 0000 0000 0000 0000 0000 0110
    反码是:
    1111 1111 1111 1111 1111 1111 1111 1001 是个负数,因此计算机存放的时候是先反码:
    1111 1111 1111 1111 1111 1111 1111 0110
    再加1:
    1111 1111 1111 1111 1111 1111 1111 0111

    所以答案是: -7



    在计算机中,

    负数

    除为最高位为

    1

    以外,还采用补码形式进行表达。

  • 相关阅读:
    【转】以太坊分片:Overview and Finality
    Raiden Network — Ethereum 区块链支付通道
    ERC 和 EIP 代表什么呢?
    【转】什么是加密经济学
    Ethereum Probabilistic Micropayments
    【转】以太坊钱包分析与介绍
    【转】用Python从零开始创建区块链
    【转】用 Go 构建一个区块链
    通用权限管理系统组件 (GPM
    通用权限管理系统组件 (GPM
  • 原文地址:https://www.cnblogs.com/qq1871707128/p/6055256.html
Copyright © 2011-2022 走看看