| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 822 人关注过本帖
标题:编写一个函数,其功能是将一个二进制整数的奇数位反转(0变1,1变0)最近在 ...
只看楼主 加入收藏
yangcaifei
Rank: 4
来 自:陕西
等 级:业余侠客
威 望:2
帖 子:127
专家分:216
注 册:2014-11-3
结帖率:84%
收藏
已结贴  问题点数:20 回复次数:6 
编写一个函数,其功能是将一个二进制整数的奇数位反转(0变1,1变0)最近在oj上刷题,这道题没有思路
编写一个函数,其功能是将一个二进制整数的奇数位反转(0变1,1变0)
搜索更多相关主题的帖子: 二进制 
2015-05-25 23:09
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
多少位的二进制数?给些input、output sample呗。

能编个毛线衣吗?
2015-05-25 23:26
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:8 
#include<stdio.h>
void f(int n,int i){
    int mod=n%10;
    n/=10;
    if(n)f(n,(i+1)%2);
     if(i)
    printf("%d",mod);
    else printf("%d",(mod+1)%2);
}
main(){
    int i=11101;
    f(i,0);
}

剑栈风樯各苦辛,别时冰雪到时春
2015-05-26 07:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
你这个“整数”的类型是什么?
你这个“奇数”是从0开始计数的,还是从1开始计数的?

假设你的类型是64bits的 unsigned long long,从0开始计数,那么公式是:n ^= 0xAAAAAAAAAAAAAAAAull;
2015-05-26 08:21
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:6 
以一个字节为例:要反转的数为01101011,我需要将奇位数反转,那么我需要一个掩码即可,属于奇位数的8位掩码为01010101,然后将这两个数异或即可将奇位数反转了:
  01101011  该数奇位数反转结果为:01101011
⊙01010101
                  位数:87654321
  00111110        奇位数反转结果:00111110
经过运算和实际反转结果相同(如果从0开始计位则将掩码改下即可)。

能编个毛线衣吗?
2015-05-26 09:16
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 5楼 wmf2014
不能叫掩码,还是叫奇位反转码吧。

能编个毛线衣吗?
2015-05-26 09:25
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:6 
回复 5楼 wmf2014
唉,写C是很慢.我想到是1010...10,然后和原数相与(不对)应该是异或
至于这个1010...10如何算,根据位数n来2^1+2^3+...+2^n-1
程序代码:
#include <math.h>
main()
{ int i,j=0;
  system("cls");
  for(i=1;i<8;i=i+2)
   {j=j+pow(2,i);}
  printf("Please enter a integer:");
  scanf("%d",&i);
  printf("i=%d\n",i);
  i=i^j;
  printf("i=%d\n",i);
  getch();
  }
turbo c 2.0
/汗,一直把pow 写为 ^


[ 本帖最后由 lianyicq 于 2015-5-26 10:01 编辑 ]

大开眼界
2015-05-26 09:46
快速回复:编写一个函数,其功能是将一个二进制整数的奇数位反转(0变1,1变0)最 ...
数据加载中...
 
   



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

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