C******8 发帖数: 501 | |
l***i 发帖数: 1309 | |
c********t 发帖数: 5706 | 3 只能bit operation了吧?
【在 C******8 的大作中提到】 : 跪了。。。
|
C******8 发帖数: 501 | 4 details?
【在 c********t 的大作中提到】 : 只能bit operation了吧?
|
C******8 发帖数: 501 | 5 那这表得多大阿?而且怎么建?
【在 l***i 的大作中提到】 : table look up.
|
A*****i 发帖数: 3587 | 6 99乘法表一个,加法运算一个,加法运算内部用bit operation来做
然后计算的时候先拆数字,分别乘,乘完了用加法运算加进位……
智商是在拙计只能想到这里了……
【在 C******8 的大作中提到】 : 那这表得多大阿?而且怎么建?
|
r*********n 发帖数: 4553 | 7 其实这道题可以这么做
int multi(int x, int y){
cout<<"what is the result of "<
int ret;
//assuming someone with the same IQ as the interviewer
//is sitting in front of the screen
cin>>ret;
return ret;
} |
y****n 发帖数: 743 | 8 面试时遇到这道题,很想把面试官吊起来打。
我只能想到把循环展开,按位判断,叠加。
如果32位整数就展开32步。 |
y****n 发帖数: 743 | 9 面试官想要这样的垃圾代码?
public static int Mul(int a, int b)
{
int result = 0;
result += (((a >> 0) & 1) > 0) ? (b << 0) : 0;
result += (((a >> 1) & 1) > 0) ? (b << 1) : 0;
result += (((a >> 2) & 1) > 0) ? (b << 2) : 0;
result += (((a >> 3) & 1) > 0) ? (b << 3) : 0;
result += (((a >> 4) & 1) > 0) ? (b << 4) : 0;
result += (((a >> 5) & 1) > 0) ? (b << 5) : 0;
result += (((a >> 6) & 1) > 0) ? (b << 6) : 0;
result += (((a >> 7) & 1) > 0) ? (b << 7) : 0;
result += (((a >> 8) & 1) > 0) ? (b << 8) : 0;
result += (((a >> 9) & 1) > 0) ? (b << 9) : 0;
result += (((a >> 10) & 1) > 0) ? (b << 10) : 0;
result += (((a >> 11) & 1) > 0) ? (b << 11) : 0;
result += (((a >> 12) & 1) > 0) ? (b << 12) : 0;
result += (((a >> 13) & 1) > 0) ? (b << 13) : 0;
result += (((a >> 14) & 1) > 0) ? (b << 14) : 0;
result += (((a >> 15) & 1) > 0) ? (b << 15) : 0;
result += (((a >> 16) & 1) > 0) ? (b << 16) : 0;
result += (((a >> 17) & 1) > 0) ? (b << 17) : 0;
result += (((a >> 18) & 1) > 0) ? (b << 18) : 0;
result += (((a >> 19) & 1) > 0) ? (b << 19) : 0;
result += (((a >> 20) & 1) > 0) ? (b << 20) : 0;
result += (((a >> 21) & 1) > 0) ? (b << 21) : 0;
result += (((a >> 22) & 1) > 0) ? (b << 22) : 0;
result += (((a >> 23) & 1) > 0) ? (b << 23) : 0;
result += (((a >> 24) & 1) > 0) ? (b << 24) : 0;
result += (((a >> 25) & 1) > 0) ? (b << 25) : 0;
result += (((a >> 26) & 1) > 0) ? (b << 26) : 0;
result += (((a >> 27) & 1) > 0) ? (b << 27) : 0;
result += (((a >> 28) & 1) > 0) ? (b << 28) : 0;
result += (((a >> 29) & 1) > 0) ? (b << 29) : 0;
result += (((a >> 30) & 1) > 0) ? (b << 30) : 0;
result += (((a >> 31) & 1) > 0) ? (b << 31) : 0;
return result;
} |
g****t 发帖数: 4493 | |
Y********f 发帖数: 410 | 11 移位相加,加也可以通过移位实现
【在 C******8 的大作中提到】 : details?
|
Y********f 发帖数: 410 | 12 这种题是挺无聊的
【在 y****n 的大作中提到】 : 面试时遇到这道题,很想把面试官吊起来打。 : 我只能想到把循环展开,按位判断,叠加。 : 如果32位整数就展开32步。
|
C******8 发帖数: 501 | 13 只给10分钟,做完email代码过去,是不是基本上不要求把完整代码写出来阿?
网上搜到的都挺复杂的,感觉抄都抄不完阿10分钟。。。
【在 y****n 的大作中提到】 : 面试时遇到这道题,很想把面试官吊起来打。 : 我只能想到把循环展开,按位判断,叠加。 : 如果32位整数就展开32步。
|
j********x 发帖数: 2330 | 14 不准用算术运算亲
【在 y****n 的大作中提到】 : 面试官想要这样的垃圾代码? : public static int Mul(int a, int b) : { : int result = 0; : result += (((a >> 0) & 1) > 0) ? (b << 0) : 0; : result += (((a >> 1) & 1) > 0) ? (b << 1) : 0; : result += (((a >> 2) & 1) > 0) ? (b << 2) : 0; : result += (((a >> 3) & 1) > 0) ? (b << 3) : 0; : result += (((a >> 4) & 1) > 0) ? (b << 4) : 0; : result += (((a >> 5) & 1) > 0) ? (b << 5) : 0;
|