int s = 777777777;
int h = 0x0000000f;
int m = 0;
int[] buf = new int[8];
System.out.println(s);
for (int i = 0; i < 8; i++) {
m = s & h;
System.out.println(m);
s = s >> 4;
buf[i] = m;
}

解决方案 »

  1.   

    这是位操作嘛。
    m = s & h; 按位与,由于h = 0x0000000f,十六进制数,最后四位是1,其它都是0,h=000…01111。
    所以只要取s的最后四位即可,求法:s%(2的4次方)=1,s的最后四位是0001,与h的最后四位按位与,结果是1。s>>4,就相当于,s/(2的四次方)。
      

  2.   

    int s = 777777777; //s就是777777777,
    int h = 0x0000000f; //h以0x开头表示16进制,0000000f就是15
    int m = 0; 
    int[] buf = new int[8]; //定义一个8位int数组
    System.out.println(s); //打印s
    for (int i = 0; i < 8; i++) { 
    m = s & h; //按位与预算,就是转换成2进制后按位与,1&1=1;0&0=0;1&0=0;
    System.out.println(m); //打印m
    s = s >> 4; //"有符号"右移4位,11111111 ,>>4之后就成了00001111
    buf[i] = m; //给数组赋值
    }