Redian新闻
>
困扰我的一个小问题,很久了
avatar
困扰我的一个小问题,很久了# Java - 爪哇娇娃
k*d
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
avatar
m*t
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。

avatar
k*d
3
int digits[] = new int[32];
也是可以的。
但是,32个int好像好多啊,每个int都是32位啊
还有 汇编指令只有基本的load,store ,jump 等,如果构造数组啊?
System.out.print如何用汇编表示出来啊?
avatar
m*t
4

那是个stack存给定的这个int的数位。
间接寻址
假定有个BIOS调用是往屏幕上写字符的,难道真要直接往显存写字节?
你这个明显是个面试题,所以只要说明代码简单到可以转成汇编就可以了,总
不会真的要你把汇编码写出来。

【在 k*******d 的大作中提到】
: int digits[] = new int[32];
: 也是可以的。
: 但是,32个int好像好多啊,每个int都是32位啊
: 还有 汇编指令只有基本的load,store ,jump 等,如果构造数组啊?
: System.out.print如何用汇编表示出来啊?

avatar
k*d
5
不是面试题啦,是考试题,往届的考题
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。