k*******d 发帖数: 701 | 1 一个练习题,如果把一个int整数转成二进制输出。
要求条件是
1。不能使用java已有的函数。
2。对写出的函数转换成汇编语言,也就是把自己写的函数要轻松的转变成汇编。这就
意味着,不要用
面向对象的东西啦,不然转成汇编可就麻烦了。
我遇到的问题
1。用直观的% / 运算,算出来的是逆序的,也就是说,比如 4, 我先得到是0,然后
又是0,然后
才是1。而我想得到是是100。
比如
4 / 2= 2 ....0
2 / 2= 1 ....0
1 / 2= 0 ....1
2。输出。如何输出?这个问题直接与要求2相关。
Java 里面的Integer.toBinaryString(int i)
的源代码还好,但是最后一句设计到new String(char[],int,int)函数,这个就难以转
成汇编
了。
public static String toBinaryString(int i) {
return toUnsignedString(i, 1);
}
这个函数是用来转二进制十六进制和八进制等的。
private static String toUnsigned |
m******t 发帖数: 2416 | 2 Something like this I guess?
int digits[] = new int[64];
int last = 0;
do {
digits[last++] = num % 2;
num /= 2;
} while (num > 0);
for (int i = last - 1; i >= 0; i--) {
System.out.print(digits[i]);
}
System.out.println();
【在 k*******d 的大作中提到】 : 一个练习题,如果把一个int整数转成二进制输出。 : 要求条件是 : 1。不能使用java已有的函数。 : 2。对写出的函数转换成汇编语言,也就是把自己写的函数要轻松的转变成汇编。这就 : 意味着,不要用 : 面向对象的东西啦,不然转成汇编可就麻烦了。 : 我遇到的问题 : 1。用直观的% / 运算,算出来的是逆序的,也就是说,比如 4, 我先得到是0,然后 : 又是0,然后 : 才是1。而我想得到是是100。
|
k*******d 发帖数: 701 | 3 int digits[] = new int[32];
也是可以的。
但是,32个int好像好多啊,每个int都是32位啊
还有 汇编指令只有基本的load,store ,jump 等,如果构造数组啊?
System.out.print如何用汇编表示出来啊? |
m******t 发帖数: 2416 | 4
那是个stack存给定的这个int的数位。
间接寻址
假定有个BIOS调用是往屏幕上写字符的,难道真要直接往显存写字节?
你这个明显是个面试题,所以只要说明代码简单到可以转成汇编就可以了,总
不会真的要你把汇编码写出来。
【在 k*******d 的大作中提到】 : int digits[] = new int[32]; : 也是可以的。 : 但是,32个int好像好多啊,每个int都是32位啊 : 还有 汇编指令只有基本的load,store ,jump 等,如果构造数组啊? : System.out.print如何用汇编表示出来啊?
|
k*******d 发帖数: 701 | |