多谢
整数的反码:   
  1、[X]=X                                 0≤X<2^(n-1)   
  2、[X]=(2^n-1)+X     -2^(n-1)<X≤0   
  小数的反码:   
  1、[X]=X                                 0≤X<1   
  2、[X]=(2-2^(-n+1))+X       -1<X≤0   
    
  整数的补码:   
  1、[X]=X                                 0≤X<2^(n-1)   
  2、[X]=2^n+X           -2^(n-1)≤X<0   
  小数的补码:   
  1、[X]=X                                 0≤X<1   
  2、[X]=2+X                           -1≤X<0   

解决方案 »

  1.   

    import java.util.BitSet;public class IntFltBM { public static void print(BitSet bs, int len) {
    if (bs == null) {
    System.out.println("null");
    return;
    }
    if (bs.length() == 0) {
    System.out.println("empty");
    return;
    }
    if (len <= 0) {
    System.out.println("len is <= 0");
    return;
    }
    len = bs.length() < len ? len : bs.length();
    StringBuffer sb = new StringBuffer(len);
    int n = 0;
    for (int i = len - bs.length(); i > 0; i--) {
    sb.append('0');
    if (++n % 8 == 0) sb.append(' ');
    }
    for (int i = bs.length() - 1; i >=0 ; i--) {
    sb.append(bs.get(i) ? '1' : '0');
    if (++n % 8 == 0) sb.append(' ');
    }
    System.out.println(sb.toString());
    } public static void main(String[] args) {
    int i = 1266974;
    double f = -3.36727;
    //----------------------------------------------------
    int bitsi = i;
    BitSet bsi = new BitSet(Integer.SIZE);
    for (int n = 0; n < Integer.SIZE; n++) {
    bsi.set(n, ((bitsi >>> n) & 1) == 1);
    }
    System.out.print("整型原码:");
    print(bsi, 32);
    bsi.flip(0, Integer.SIZE);
    System.out.print("整型补码:");
    print(bsi, 32);
    //----------------------------------------------------
    long bitsf = Double.doubleToRawLongBits(f);
    BitSet bsf = new BitSet(Double.SIZE);
    for (int n = 0; n < Double.SIZE; n++) {
    bsf.set(n, ((bitsf >>> n) & 1L) == 1L);
    }
    System.out.print("浮点原码:");
    print(bsf, 64);
    bsf.flip(0, Double.SIZE);
    System.out.print("浮点补码:");
    print(bsf, 64);
    }}
      

  2.   

    import java.util.BitSet;public class IntFltBM {    public static void print(BitSet bs, int len) {
            if (bs == null) {
                System.out.println("null");
                return;
            }
            if (bs.length() == 0) {
                System.out.println("empty");
                return;
            }
            if (len <= 0) {
                System.out.println("len is <= 0");
                return;
            }
            len = bs.length() < len ? len : bs.length();
            StringBuffer sb = new StringBuffer(len);
            int n = 0;
            for (int i = len - bs.length(); i > 0; i--) {
                sb.append('0');
                if (++n % 8 == 0) sb.append(' ');
            }
            for (int i = bs.length() - 1; i >=0 ; i--) {
                sb.append(bs.get(i) ? '1' : '0');
                if (++n % 8 == 0) sb.append(' ');
            }
            System.out.println(sb.toString());
        }    public static void main(String[] args) {
            int i = 1266974;
            double f = -3.36727;
            //----------------------------------------------------
            int bitsi = i;
            BitSet bsi = new BitSet(Integer.SIZE);
            for (int n = 0; n < Integer.SIZE; n++) {
                bsi.set(n, ((bitsi >>> n) & 1) == 1);
            }
            System.out.print("整型原码:");
            print(bsi, 32);
            bsi.flip(0, Integer.SIZE);
            System.out.print("整型补码:");
            print(bsi, 32);
            //----------------------------------------------------
            long bitsf = Double.doubleToRawLongBits(f);
            BitSet bsf = new BitSet(Double.SIZE);
            for (int n = 0; n < Double.SIZE; n++) {
                bsf.set(n, ((bitsf >>> n) & 1L) == 1L);
            }
            System.out.print("浮点原码:");
            print(bsf, 64);
            bsf.flip(0, Double.SIZE);
            System.out.print("浮点补码:");
            print(bsf, 64);
        }}