不用乘法或加法给一个数增加7倍

guoweivip 2009-08-29 04:21:24
如题
...全文
1754 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
pasband 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 haodongb 的回复:]
引用 24 楼 gavinduan 的回复:
引用 20 楼 defty 的回复:
引用 16 楼 peacefulby 的回复:
增加7倍就是变成8倍,左移3位即可:
x = x < < 3;


太牛了,一定要顶,楼上诸位都没看清题目

果然,
It's a trap!!!!!!

估计楼主原意是变为原来的7倍。左移3位变8倍谁都会
[/Quote]

变7倍不耍赖无解吧...增7倍也不是谁都会,你会而已
heixia2025 2009-12-01
  • 打赏
  • 举报
回复
x/(1/8)
heixia2025 2009-12-01
  • 打赏
  • 举报
回复
-(x-x-x-x-x-x-x-x-x)
mehere8 2009-12-01
  • 打赏
  • 举报
回复
very excellent
learning~~~~~~~~~~~~~`
BeFore27 2009-12-01
  • 打赏
  • 举报
回复
It's a trap
柔情铁汉h 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 gavinduan 的回复:]
引用 20 楼 defty 的回复:
引用 16 楼 peacefulby 的回复:
增加7倍就是变成8倍,左移3位即可:
x = x < < 3;


太牛了,一定要顶,楼上诸位都没看清题目

果然,
It's a trap!!!!!!
[/Quote]
估计楼主原意是变为原来的7倍。左移3位变8倍谁都会
柔情铁汉h 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 rorom 的回复:]
我只管做出来能实现,效率高
很讨厌这种不让人用筷子吃饭非要用叉子的.
[/Quote]
你不懂别乱说,这个其实是让人模拟cpu如何运算,搞清楚计算机如何运算
柔情铁汉h 2009-12-01
  • 打赏
  • 举报
回复
不用+运算实现加法
int Add(int a,int b)
{
int jw=a&b;
int jg=a^b;
while(jw)
{
int t_a=jg;
int t_b=jw<<1;//进位
jw=t_a&t_b;//求进位
jg=t_a^t_b;//求相加的结果,不考虑进位
}
return jg;
}
lodachi 2009-12-01
  • 打赏
  • 举报
回复
移位 呵呵 不会
zhuzeitou 2009-12-01
  • 打赏
  • 举报
回复
增加7倍变8倍简单的位移就能搞定,或许应该说你不会而已吧
变7倍的确蛮难的,首先要用位运算实现加法,这个数字电路课上学过,具体记不得了,反正大概就是异或求值,与运算求进位,然后再怎么怎么滴……
bawgiitx 2009-11-18
  • 打赏
  • 举报
回复
//无符号不算最高位的加法,其它的也可以实现吧,减法等于加上它的补码,LZ要几倍都行

public class Main {
public static long sum(long a,long b){
long c=0;
long bf1=0x0001,bf=0;
byte jw=0;
for(int i=0;i<Long.SIZE;i++){
long ai=a&(0x0001<<i);
long bi=b&(0x0001<<i);
if(ai>0){//1 //为了方便理解用if,不用?:运算
if(bi>0){//1
if(jw>0){//1
jw=1;
bf|=0x0001<<i;//确定第i位为1,进1
}else{
jw=1;//确定第i位为0//进1
}
}else{//0
if(jw>0){//1
jw=1;//确定第i位为0//进1
}else{
jw=0;
bf|=0x0001<<i;//确定第i位为1,进0
}
}
}else{//0
if(bi>0){//1
if(jw>0){//1
jw=1;//确定第i位为0//进1
}else{
jw=0;
bf|=0x0001<<i;//确定第i位为1,进0
}
}else{//0
if(jw>0){//1
jw=0;
bf|=0x0001<<i;//确定第i位为1,进0
}else{
jw=0;//确定第i位为0//进0
}
}
}
}
return bf;
}
public static void main(String[] args) throws FileNotFoundException {
System.out.println(""+sum(20, 111));
}
}
bawgiitx 2009-11-18
  • 打赏
  • 举报
回复
不能用+那就复古,按位运算
gao11811 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 gavinduan 的回复:]
引用 20 楼 defty 的回复:
引用 16 楼 peacefulby 的回复:
增加7倍就是变成8倍,左移3位即可:
x = x < < 3;


太牛了,一定要顶,楼上诸位都没看清题目

果然,
It's a trap!!!!!!
[/Quote]
那如果增加6倍呢?
hejunlong007 2009-11-18
  • 打赏
  • 举报
回复
x = x << 3;

最佳答案。我想没有更好的方法了吧。
gavinduan 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 defty 的回复:]
引用 16 楼 peacefulby 的回复:
增加7倍就是变成8倍,左移3位即可:
x = x < < 3;


太牛了,一定要顶,楼上诸位都没看清题目
[/Quote]
果然,
It's a trap!!!!!!
Seven_23 2009-11-18
  • 打赏
  • 举报
回复
感觉像是文字游戏
libo_java 2009-11-18
  • 打赏
  • 举报
回复
那么麻烦干什么???
直接除以1/7不就全搞定了????
pathletboy 2009-11-18
  • 打赏
  • 举报
回复
x = -(-x-x-x-x-x-x-x-x);
rorom 2009-11-18
  • 打赏
  • 举报
回复
我只管做出来能实现,效率高
很讨厌这种不让人用筷子吃饭非要用叉子的.
defty 2009-11-17
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 peacefulby 的回复:]
增加7倍就是变成8倍,左移3位即可:
x = x < < 3;
[/Quote]

太牛了,一定要顶,楼上诸位都没看清题目
加载更多回复(19)

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧