注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 [业内传闻]今天,7月25日..
 帮助

Java:关于进制操作的几道习题


2008-03-03 17:30:04
 标签:Java 进制   [推送到技术圈]

版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
这些练习题在Thinking in Java 4th 第三章中,题号在文章标出,方便查找。
author: ZJ 07-3-3
 
练习8 展示16进制和八进制计数法来操作long值。
练习9 分别显示用floatdouble指数计数法所能表示的最大和最小的数字。
练习10 编写一个具有两个常量值的程序,一个具有交替的二进制位10,其中最低有效位为0,另一个也具有交替的二进制位10,但是其最低有效位为1
 
package p03.e08_e09_e10;
 
import static util.Print.print;
 
public class Scale {
    static void doe8() {
       long l1 = 0xf;//116进制代表42进制,f->1111
       print("l1=" + l1 + " Bin=" + Long.toBinaryString(l1));
       long l2 = 017;//18进制代表32进制,7->111
       print("l2=" + l2 + " Bin=" + Long.toBinaryString(l2));
    }
 
    static void doe9() {
       float fmax = Float.MAX_VALUE;
       print("float max=" + fmax);
       float fmin = Float.MIN_VALUE;
       print("float min=" + fmin);
       double dmax = Double.MAX_VALUE;
       print("double max=" + dmax);
       double dmin = Double.MIN_VALUE;
       print("double min=" + dmin);
    }
 
    static void doe10(){
       final int I=0xaa;//16进制a->2进制1010
       final int II=0x55;//16进制5->2进制0101
       print("I="+Integer.toBinaryString(I));
       print("II="+Integer.toBinaryString(II));
    }
    public static void main(String[] args) {
       print("===e08===");
       doe8();
       print("===e09===");
       doe9();
       print("===e10===");
       doe10();
    }
}
结果
===e08===
l1=15 Bin=1111
l2=15 Bin=1111
===e09===
float max=3.4028235E38
float min=1.4E-45
double max=1.7976931348623157E308
double min=4.9E-324
===e10===
I=10101010
II=1010101
 
练习11 以一个最高有效位为1的二进制数字开始,用有符号右移位操作符对其进行右移,直至所有的二进制位都被移出为止。
练习12 以一个所有位都为1的二进制数字开始,先左移它,然后用无符号右移操作符对其进行右移,直至所有的二进制位都被移出为止。
联系13 编写一个方法,它以二进制形式显示char类型的值。使用多个不同的字符来展示它。
 
package p03.e11_e12_e13;
 
import static util.Print.print;
 
public class RLMover {
    public static void doe11() {
       int toNum = 0xaaff;// 16bits
       print("Original :");
       print(Integer.toBinaryString(toNum));
       for (int i = 0; i < 16; i++) {
           toNum >>>= 1;// 无符号右移位,高位插0
           print(Integer.toBinaryString(toNum));
       }
    }
 
    public static void doe12() {
       int toNum = 0xff;// 8bits
       print("Original :");
       print(Integer.toBinaryString(toNum));
       print("Left Move 8 bits :");
       for (int i = 0; i < 8; i++) {
           toNum <<= 1;// 左移位
           print(Integer.toBinaryString(toNum));
       }
       print("Right Move 16 bits :");
       for (int i = 0; i < 16; i++) {
           toNum >>= 1;// 右移位
           print(Integer.toBinaryString(toNum));
       }
    }
 
    public static void doe13() {
       char cArray[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
       for (int i = 0; i < cArray.length; i++)
           print(Integer.toBinaryString(Character.codePointAt(
                  cArray, i)));
    }
 
    public static void main(String[] args) {
       print("===e11===");
       doe11();
       print("===e12===");
       doe12();
       print("===e13===");
       doe13();
    }
}
结果:
===e11===
Original :
1010101011111111
101010101111111
10101010111111
1010101011111
101010101111
10101010111
1010101011
101010101
10101010
1010101
101010
10101
1010
101
10
1
0
===e12===
Original :
11111111
Left Move 8 bits :
111111110
1111111100
11111111000
111111110000
1111111100000
11111111000000
111111110000000
1111111100000000
Right Move 16 bits :
111111110000000
11111111000000
1111111100000
111111110000
11111111000
1111111100
111111110
11111111
1111111
111111
11111
1111
111
11
1
0
===e13===
1000001
1000010
1000011
1000100
1000101
1000110
1000111
1001000
1001001
1001010
1001011
1001100
1001101
1001110
1001111
1010000
1010001
1010010
1010011
1010100
1010101
1010110
1010111
1011000
1011001
1011010

本文出自 “子 孑” 博客,转载请与作者联系!





    文章评论
 
2008-03-03 17:40:30
终于又看见大作啦

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: