zoukankan      html  css  js  c++  java
  • 源码反码补码补充

    符号整数类型的范围:
    整数类型:byte,short,int,long
    byte: 8 位 -128--->127
    short 16位 -32768--->32767
    int   32位 -2147483648-->2147483647
    long  64位  -9223372036854775808 --> 9223372036854775807

    为什么是这样这样的范围:
    原码:讲一个数转换为二进制,加上符号位就是原码(0表示整数,1表示负数)
    反码;整数的反码就是其原码,负数的反码就是除符号外,每位取反。
    补码:整数的补码就是其原码,负数的补码是其反码加一。
    例如:      单字节5,-5的原码为:0000 0101      1000 0101c
                  5,-5的反码为:0000 0101      1111 1010
                  5,-5的补码为:0000 0101      1111 1011  

    为什么计算机要用补码表示负数。
    优点:
    1防止有“俩个零”。八位本来可以表示256个数据,如果用原码表示,0000 0000 和 1000 0000都表示零。
    补码 0000 0000 和 1111 1111都表示零,这就有点奇怪了。但是用补码表示呢?只有0000 0000 这一种表示方法。
    2方便计算机运算:
    求补运算:
    2正数的求补方法和负数的求补方法相同如。
             -5的补码      逐位求反    加一得5的补码    
    -5 -> 5: 1111 1011 -> 0000 0100 -> 0000 0101
              5的补码      逐位求反    加一得-5的补码   
    5 -> -5: 0000 0101 -> 1111 1010 -> 1111 1011
    2方便运算,变减法为加法。
    3.....
    这些只需要了解一下即可。
    回归原题;为什么8位的byte型数据为什么范围是-128到127呢,了解了这个知识点我们就知道了。
    8位补码最大为:0111 1111(127) 最小为:1000 0000(-128)
    16位,32位,64位类似。
    所以,n位类型表示有符号数范围为 -(2^(n-1))->2^(n-1)-1

  • 相关阅读:
    C# 反射机制(转)
    asp.net 控件开发(三)处理标签间内容
    WCF学习(三)数据契约1
    个人的一点私事
    Asp.net 控件开发(四) 数据回传
    WCF学习 (四) 数据契约的事件
    wcf学习(一):预览
    WCF学习(二)服务契约
    css3图片3D翻转
    Javascript面向对象(一)(共有方法,私有方法,特权方法)
  • 原文地址:https://www.cnblogs.com/nothx/p/8562166.html
Copyright © 2011-2022 走看看