标题:关于位运算的一个题目,高手请进
只看楼主
低调求学
Rank: 2
等 级:论坛游民
帖 子:51
专家分:33
注 册:2012-5-9
结帖率:64.29%
已结贴  问题点数:20 回复次数:50 
关于位运算的一个题目,高手请进
给出一个整数,编写一个程序将这个整数的9倍求出来,前提:不能用加减乘除法。这是一所公司的笔试题,求高手赐教!
搜索更多相关主题的帖子: 加减乘除 
2012-10-22 17:35
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:18 
这样算不算满足要求?
程序代码:
#include<stdio.h>
int X9(int n)
{
    int a, f;
    for(a = n << 3; f = a & n; a ^= n, n = f << 1);
    return a ^ n;
}
int main()
{
    int n;
    scanf("%d", &n);
    printf("%d * 9 = %d\n", n, X9(n));
    return 0;
}

重剑无锋,大巧不工
2012-10-22 18:35
低调求学
Rank: 2
等 级:论坛游民
帖 子:51
专家分:33
注 册:2012-5-9
得分:0 
多谢!!
2012-10-22 18:55
低调求学
Rank: 2
等 级:论坛游民
帖 子:51
专家分:33
注 册:2012-5-9
得分:0 
回复 2楼 beyondyf
小弟学程序两年,资质平庸,看半天也没看出个思路出来,求大神通俗易懂的解释一下,万分感激!!
2012-10-22 19:31
heishu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:42
专家分:131
注 册:2012-9-7
得分:0 
恩,

[ 本帖最后由 heishu 于 2012-10-22 20:32 编辑 ]

[qq]1402050187[/qq]
2012-10-22 20:28
万光海
Rank: 3Rank: 3
来 自:桂林
等 级:论坛游侠
帖 子:92
专家分:133
注 册:2012-10-21
得分:0 
大神,求解啊……小的感激不尽啊……
2012-10-23 00:10
hgand
Rank: 2
等 级:论坛游民
帖 子:32
专家分:77
注 册:2012-10-17
得分:0 
for(a = n << 3; f = a & n; a ^= n, n = f << 1); 二楼大神怎么退出for循环啊?
2012-10-23 10:34
hgand
Rank: 2
等 级:论坛游民
帖 子:32
专家分:77
注 册:2012-10-17
得分:0 
#include<stdio.h>
int X9(int n)
{
    int i,m ;
    m = n<<3 ;  //8倍
    for(i=0;i<n,i++)m++;//再加一倍
    return m;
 }
int main()
{
    int n;
    scanf("%d", &n);
    printf("%d * 9 = %d\n", n, X9(n));
    return 0;
}
2012-10-23 10:43
nickhua
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-10-21
得分:0 
我是菜鸟 运行了一遍 好多不懂。。。
2012-10-23 11:12
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
右移一位  *2
右移2位   *4
右移3位   *8

左移一位  /2
左移2位   /4
左移3位   /8

DO IT YOURSELF !
2012-10-23 11:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-383809-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.245124 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved