首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C语言指南】交换整数的奇数位和偶数位

一、问题描述 使用C语言代码实现:将一个整数的奇数位和偶数位交换 二、解决思路 在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作。...当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左(或从最低位到最高位)数的位置。在这种计数方式下,第一位是奇数位,第二位是偶数位,依此类推。 1....然后,将奇数位和偶数位的位置边换 将上一步得到的整数的奇数位,左移数位变换到偶数位的位置上 将上一步得到的整数的偶数位,右移>>一位,即可将奇数位变换到偶数位的位置上 3....b = 13; printf("%d\n", Exchange(a)); printf("%d\n", Exchange(b)); return 0; } 五、总结 在C语言中,要交换一个整数的二进制位中的奇数位和偶数位...使用函数和宏都可以实现该代码。对于此类较短较简单的代码,因为宏只是简单的文本替换,所以省去了函数调用和返回的时间和空间开销,所以效率更高一些。

11810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    题目:将链表的奇数位和偶数位调换组成新的链表

    题目:将链表的奇数位和偶数位调换组成新的链表 原题链接: http://oj.leetcode.com/problems/swap-nodes-in-pairs/ Given a linked list...必须重新建立一个新的链表 进行返回 采用 带头节点单链表 知识补充:带头节点单链表和不带头节点单链表有什么区别 带头结点单链表好处解决了 不用判断第一个节点是否为空 不需要特殊处理 用统一方法实现就...Q2: 链表遍历操作 ptr(A)=ptr->next(B) 前提条件节点A和节点B 位置关系没有发现变化 在链表排序(交换位置是排序一个方法)原来位置发生改变如何处理 ?...耗时6ms不是最优解呀 耗时应该在建立头节点 如果不用头节点 需要特殊处理 第一次处理时候null 查看耗时3秒的 提取到函数外面 为了防止异常数据 异常判断 为了完成遍历 采用三个节点 first...可以采用递归方式 参照历史题目: 题目:判断一个单链表是否回文链表

    1.7K90

    利用宏,实现将一个整数的二进制位的奇数位和偶数位交换

    ,那么如何利用宏,实现将一个整数的二进制位的奇数位和偶数位交换?...二、二进制操作符 要实现将一个整数的二进制位的奇数位和偶数位交换,我们可以先把二进制数的奇数位 和 偶数位上的每一个信息提取出来 这里我们了解一个二进制操作符: 位操作符 & 和 | & 和 | 都是对二进制形式进行操作...,可以 让奇数位的每一位& 1,让偶数位 & 0 同理,如果我们要保留偶数位的信息:让偶数位的每一位 & 1,让奇数位 & 0 我们以十六进制数进行表示: 一个十六进制数 表示四位二进制数,即 4byte...但是我们要进行交换,所以奇数位和偶数位的位置也应该交换 这时候我们需要了解移位操作符: 移位操作符 >> 和 << 移位操作符也是对 二进制格式 进行操作 >> 表示是 对整形的二进制位向右边移动n... //写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

    12410

    python 取列表偶数和奇数位置的值

    python中的列表等于其他语言中的数组 首先了解下一般取列表怎么按索引取值,也就是列表的切片: list[i:j] 就是从列表的索引 i 到索引j 个的值;列表的索引第一位是从0开始的 list[i...:j:2] 一样取i 到 j 但加入了步长 这里步长为2;也就是取每次索引位置开始+2的值 看了上面,应该就知道怎么取奇数位 偶数位了吧 list[::2 ] 就是取奇数位 这里的 i j 我们省略的话就是默认数组最开头到结尾...list[1::2] 这里缺省了j 但是i定义了1 也就是从数组第二个数开始取 ,所以这个是取偶数位 例子: l=['28', '7', '55', '0', '82', '3', '9', '4'..., '92', '9', '54', '7', '19', '4', '36', '6'] print(f'奇数位:{l[::2]}\n偶数位:{l[1::2]}') 结果: 奇数位:['28', '55...', '82', '9', '92', '54', '19', '36'] 偶数位:['7', '0', '3', '4', '9', '7', '4', '6']

    9210

    【愚公系列】软考高级-架构设计师 005-校验码

    这种方法可以检测出任意奇数位的错误,但不能检测出偶数位的错误,也无法定位错误发生的具体位置。 工作原理 偶校验:在偶校验中,数据加上校验位后,"1"的总数应该是偶数。...例子 假设我们要传输数据1011,我们使用奇校验和偶校验来计算校验位: 使用偶校验: 数据1011中有三个"1",是奇数。 为了使总数成为偶数,我们添加校验位1。...1.2 练习 1、给出编码1001101的奇校验码和偶校验码( )。...水平奇偶校验 和 B. 垂直奇偶校验:这两种奇偶校验方法通常用于简单的错误检测,特别是在通信或数据存储中。它们通过添加一个校验位来确保一组数据位中"1"的总数为奇数(奇校验)或偶数(偶校验)。...校验位的位置通常是2的幂次方上(即第1、2、4、8位等),其值根据特定的数据位计算得出,以确保某个特定组合的位(包括数据位和校验位)中1的数量为偶数(偶校验)或奇数(奇校验),这取决于使用的是偶校验法还是奇校验法

    20610

    数据校检

    位) 校验信息(r=1位) 编码 - 根据有效信息计算校验信息位,使校验码(数据+1位校验信息)中1的个数满足奇/偶检验的要求 - 0001 -> 00011 (偶校验) P1 = D...- 不能检测偶数位错误,无错结论不可靠,是一种错误检测码 - 不能定位错误,因此不具备纠错能力 奇偶校验的码距 - 码距为 2 改进的奇/偶校验 - 双向奇偶校验 - 可纠正1位错误...4个顶点上的错误 [format,png] - 方块校验 - 垂直水平校验 奇/偶校验应用 - 应用场景 - 内存条 - 工程上的应用 - 路由器配置 -...> - 1 - 生成多项式G(x) 收发双方约定的一个(r + 1)位二进制数,发送方利用G(X)对信息多项式做模2除运算,生成校验码。...*数据**被编号小于j的若干个海明位号之和等于j的**校验位**所校验 ,如: !

    73987

    LeetCode 328:奇偶链表 Odd Even Linked List

    给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。...The first node is considered odd, the second node even and so on … 解题思路: 这道题很简单,迭代链表,将该链表奇数位节点和偶数位节点分别取出分隔成两个链表...需要记录偶数位节点的第一个节点,因为这是偶数链表的头节点,最后拼接链表时要用奇数链表的尾节点连接该节点。...另外一种方法是以第一个奇偶节点开始,将奇节点指向偶节点的下一个节点(肯定是奇节点),然后刷新奇链表,此时奇节点指向新加入的节点;将偶节点指向奇节点的下一个节点(肯定是偶节点),然后刷新偶链表,此时偶节点指向新加入的节点...= null) {//循环条件,偶节点遇空时结束 odd.next = even.next;//奇节点指向偶节点的下一个节点 odd = odd.next

    62740

    回文素数(除11外,偶数位的回文数都不是质数)

    题目 求出大于或等于 N 的最小回文素数。 回顾一下,如果一个数大于 1,且其因数只有 1 和它自身,那么这个数是素数。 例如,2,3,5,7,11 以及 13 是素数。...回顾一下,如果一个数从左往右读与从右往左读是一样的,那么这个数是回文数。 例如,12321 是回文数。...解题 除11外,偶数位的回文数如456654等,都不是质数,他们都可以被11整除 根据这一条 pass掉一些大数,避免超时 class Solution { public: int primePalindrome...;N;++N) { if(10000000 < N && N < 100000000) N = 100000000;//没有8位数的回文素数...if(isPalindrome(N,bit) && (bit%2) && isPrime(N))//奇数位的回文数才可能是质数,除11 return N;

    80810

    LeetCode 328:奇偶链表 Odd Even Linked List

    给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。...解题思路: 这道题很简单,迭代链表,将该链表奇数位节点和偶数位节点分别取出分隔成两个链表,然后将奇偶两个链表连接起来组成新链表,返回头节点即可。...需要记录偶数位节点的第一个节点,因为这是偶数链表的头节点,最后拼接链表时要用奇数链表的尾节点连接该节点。...另外一种方法是以第一个奇偶节点开始,将奇节点指向偶节点的下一个节点(肯定是奇节点),然后刷新奇链表,此时奇节点指向新加入的节点;将偶节点指向奇节点的下一个节点(肯定是偶节点),然后刷新偶链表,此时偶节点指向新加入的节点...= null) {//循环条件,偶节点遇空时结束 odd.next = even.next;//奇节点指向偶节点的下一个节点 odd = odd.next

    72610

    回溯算法 - 机器人的运动范围

    前言 有一个矩阵,机器人可以从坐标(0,0)的格子开始移动,它每次可以向左、右、上、下移动一格,但是不能进入行坐标和列坐标的数位之和大于K的格子,求这个机器人总共能走多少个格子以及它的行动轨迹。...我们要做的这层判断为:计算出待访问格子的坐标的数位之和,如果其大于K(最大活动范围)则不能访问。 数位之和:即取出数字中每个位置的值,将其相加得出的结果。...个参数: 矩阵的总行数 矩阵的总列数 即将进入格子的行坐标 即将进入格子的列坐标 最大活动范围 访问标识矩阵 路径矩阵 首先,我们需要进行边界条件判断(递归的终止条件),条件满足代表该格子无法访问,可行走格子为...,保存当前格子中的值到行动轨迹中,标识当前格子为已访问状态,已行走格子数+1,并递归尝试当前格子的其它四个方向的格子能否进入。...* 一个机器人从坐标(0,0)的格子开始移动, * 它每次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。

    43420

    计算机组成原理 --- 数据信息的表示

    3.如果需要显示 和 打印汉字,还要将 汉字的内码 转换成 字形码。 编码的方式 无外乎 以下 4 大类。 ? 二:汉字机内码 汉字机内码 是 计算机内 存储和处理汉字时使用的编码。...汉字机内码 与 区位码 之间的 对应 关系为:区位码 + A0A0H。 由于文本中通常混用 使用汉字 和 西文字符,所以要对其进行区分。...2.4.2 奇偶校验 奇偶校验是一种常见的简单校验 。通过检测校验码中 1 的个数的奇偶性是否改变来判断数据是否出错。 简单奇偶校验 奇偶校验包含奇校验和偶校验两种校验。...有效信息(被校验的信息)部分可能是奇性(“1”的个数为奇数)的,也可能是偶性的,所以奇、偶两种校验都只需配一个校验码,就可以使整个校验码满足指定的奇偶性要求。...这个校验位取“0”还是“1”的原则是:若是奇校验,则连同校验位在内编码里含“1”的个数共有奇数个;若是偶校验,则连同校验位在内编码里含“1”的个数是偶数个。 ? ?

    2.2K10

    奇偶性与魔术(二)——数学到魔术的初体验

    在奇移动和偶移动下分别改变和不改变所在集合并依次可以移走若干另一个集合的牌,直到某个集合的牌只剩下一张而变成一个确定的结果。...这样,整个5 * 4的扑克牌地毯就间隔地变成了偶数位置(背面向上)和奇数位置(正面向上)。...而观众的移动则可以有上下左右的区分,其实这都不要紧,无论选哪个最终都变成要加到或者减到最后结果里的数,而奇偶性对加减仍然不敏感,位置控制生效。...这个魔术的原理不动的话,那就必须从奇或者偶位开始,按照一定的奇偶规律来移动,这个移走扑克牌的过程是一个和每次移动奇偶性配合的过程,尽量不能让看出移走规律,又能尽快确定出最后的位置。...这样一来,恰好使得扑克牌位置在奇奇偶偶奇上(起点为偶数),而可以把偶偶奇奇偶上的牌分次移走,可以稍稍显得不对称和规律,以隐藏规律。 2.

    67810

    二进制的转换、&、|、^ 、~、单身狗1、交换两个变量、统计二进制中1的个数、打印整数二进制的奇数位和偶数位

    1.二进制的转换 二进制在计算机是进行运算是因为运算难度低只有0和1组成的数字,我们只需要逢0进1就可以,也有利于转换各种进制。...// 因为我们知道计算机有32个二进制位,所以需要循环32次二进制的数字 // 如果判断有多少1的话我们肯定需要使用if语句,而if语句的条件是什么 // for (int...a &= (a - 1);//a=a&(a-1) count++; } printf("%d", count); return 0; } 6.打印整数二进制的奇数位和偶数位...获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列 #include void Print(int num) { for(int i=31; i>=1; i-=2)...的相同数清零 int count = 0; while(tmp)//相同数 { tmp &=(tmp - 1);//找到相同数count++ count

    10110

    C语言练习之计算一个数的每位之和(递归实现)

    前言 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和 例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19 输入:1729,输出:...19 一、思路 1729可以递归分解为172和9; 172可以递归分解为17和2; 17可以递归分解为1和7; 直到只剩下一位数字,即1再进行返回。...二、源代码以及运行截图 为了方便大家的交流和学习,我将程序源代码和运行截图放置在下方。...,本文简单的介绍了用C语言递归计算一个数的每位之和思路,还进一步展示了代码的运行结果验证了作者的思路。...本文的作者也只是一个正在学习C语言等编程知识的萌新,若这篇文章中有哪些不正确的内容,请在评论区向作者指出(也可以私信作者),欢迎大佬们指点,也欢迎其他正在学习C语言的萌新和作者进行交流,谢谢大家!

    42520
    领券