标题:闲来无事,散散分 也期望闲来无事的大侠们进来水水
取消只看楼主
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
结帖率:99.76%
已结贴  问题点数:100 回复次数:5 
闲来无事,散散分 也期望闲来无事的大侠们进来水水
程序代码:
#include <stdio.h>
#include <malloc.h>

//把一个正整数分解为2^n+
void mi(int s,int* t,int* len)
{
    int i=0;
    for(;s>0;i++)
    {
        *(t+i)=s & 1;
        s>>=1;
    }
    *len=i;
}
//使用移位计算等差数列之和
int w_add(int begin,int* t,int end)
{
    int k=begin+end;
    int j=end-begin+1;
    int m=k;
    int sum=0;
    int len=0;
    mi(j,t,&len);
    for(int i=0,k=m;i<len;i++) if(*(t+i)) sum+=k<<i;
    return sum>>=1;
}
//测试部分
int main()
{
    int a=1234;
    int b=9876;
     int* t;
    t=(int*)malloc(sizeof(int)*32);
    int s=w_add(a,t,b);
    printf("%d+......+%d=%d\n",a,b,s);
    free(t);
    return 0;
}


[此贴子已经被作者于2015-10-30 13:50编辑过]

2015-10-30 13:43
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 2楼 embed_xuel
要多少分 哥有   嘿嘿

DO IT YOURSELF !
2015-10-30 13:54
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 6楼 rjsp
谢谢了

我目前接触到的电脑就是32位为最高  64位的尚未接触过的

DO IT YOURSELF !
2015-10-30 15:27
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 5楼 rjsp
我再研究研究  你的代码属于位运算的复杂应用了  一时半会还弄不透彻

DO IT YOURSELF !
2015-10-30 15:29
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
原来1<<i 会获得2^i 这么神奇

DO IT YOURSELF !
2015-10-30 15:43
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
程序代码:
#include <stdio.h>

int main( void )
{
    const int a = 1234;
    const int b = 9876;

    int sum = 0;
    {
        int i;
        for( i=0; i!=sizeof(sum)*8; ++i )
            if( (b-a+1) & (1<<i) )
                sum += (a+b)<<i;
        sum /= 2;
    }
    printf( "%d+......+%d = %d\n", a, b, sum );

    return 0;
}




"a.c" 28L, 334C


unix下编译通过运行

DO IT YOURSELF !
2015-10-31 08:11



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




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

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