当前位置: 首页 > news >正文

C语言交换二进制位的奇数偶数位

基本思路

我们要先把想要交换的数的二进制位给写出来假如交换13的二进制位,13的二进制位是

0000 0000 0000 0000 0000 0000 0000 1101

然后写出偶数位的二进制数(偶数位是1的)

1010 1010 1010 1010 1010 1010 1010 1010

然后写出奇数位的二进制数(奇数位是1的)

0101 0101 0101 0101 0101 0101 0101 0101

最后把奇数位的二进制数,和偶数位的二进制数都和原来的数进行按位与然后奇数位向>>1向右移动1位就挪到了偶数位,偶数位向<<1向左移一位就挪到了奇数位,最后两个移动完的二进制位按位或就得到了奇数偶数位互换,像这张图
在这里插入图片描述

下面是代码

# include<stdio.h>
int main()
{int num = 13;printf("交换前\n");for (int i = 0; i < 32; i++){if (((num >> i) & 1) == 1){printf("%d", 1);}else{printf("%d", 0);}}printf("\n");int temp = (num & 0x5555555555555555) << 1;int temp2 = (num & 0xAAAAAAAA) >> 1;int swap = temp | temp2;int a = 0;printf("交换后\n");for (int i = 0; i < 32; i++){if (((swap >> i) & 1) == 1){printf("%d", 1);}else{printf("%d", 0);}}return 0;
}

为什么打印出来是反的,那是由于在VS2022下是小端字节序存储是倒着存放的

0x5555555555555555就是奇数位
0xAAAAAAAA就是偶数位

define宏实现

同样用define宏定义也可以完成奇数偶数互换,下面是代码

# include<stdio.h>
# define SWAP(num) (num) = ((((num)&0xAAAAAAAA)>>1) | (((num)&0x5555555555555555)<<1))
int main()
{int num = 13;SWAP(num);printf("%d", num);return 0;
}

为什么define宏要打那么多括号呢,那是由于我们必须要确定好运算顺序和优先级,打括号保险一点,可以避免不可预料的后果

相关文章:

C语言交换二进制位的奇数偶数位

基本思路 我们要先把想要交换的数的二进制位给写出来假如交换13的二进制位&#xff0c;13的二进制位是 0000 0000 0000 0000 0000 0000 0000 1101然后写出偶数位的二进制数&#xff08;偶数位是1的&#xff09; 1010 1010 1010 1010 1010 1010 1010 1010然后写出奇数位的二进…...

爬虫实战三、PyCharm搭建Scrapy开发调试环境

#一、环境准备 Python开发环境以及Scrapy框架安装&#xff0c;参考&#xff1a;爬虫实战一、Scrapy开发环境&#xff08;Win10Anaconda&#xff09;搭建 PyCharm安装和破解&#xff0c;参考&#xff1a;爬虫实战二、2019年PyCharm安装&#xff08;激活到2100年&#xff09; …...

2012年认证杯SPSSPRO杯数学建模C题(第一阶段)碎片化趋势下的奥运会商业模式全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 C题 碎片化趋势下的奥运会商业模式 原题再现&#xff1a; 从 1984 年的美国洛杉矶奥运会开始&#xff0c;奥运会就不在成为一个“非卖品”&#xff0c;它在向观众诠释更高更快更强的体育精神的同时&#xff0c;也在攫取着巨大的商业价值&#…...

【Next.js】连接 MongoDB 实现基本的接口

【Next.js】连接 MongoDB 实现基本的接口 什么是 MongoDB MongoDB 是由C语言编写的&#xff0c;是一个基于分布式文件存储的开源数据库系统。在高负载的情况下&#xff0c;添加更多的节点&#xff0c;可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解…...

中值滤波算法与SSE2指令集并行优化

中值滤波算法是经典图像处理中极为常见的操作,一般我们通过调用OpenCV或者是Matlab直接进行使用,以至于有种它本来就很容易实现且速度很快的错觉。近来用到中值滤波算法,因为不想用到OpenCV库或者Matlab而对其实现研究了一番,才发现其中有很多值得注意的细节。下面我们结合…...

2012年认证杯SPSSPRO杯数学建模B题(第二阶段)节能减排全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 节能减排、抑制全球气候变暖 B题 白屋顶计划 原题再现&#xff1a; 第二阶段问题   虽然环境学家对地球环境温度的改变有许多种不同观点&#xff0c;但大多数科学家可以达成一个基本的共识&#xff1a;近年来人类的活动&#xff0c;尤指二氧…...

NOI - OpenJudge - 2.5基本算法之搜索 - 2753:走迷宫 - 超级无敌详细题解(含多个不同算法AC代码)

点赞关注吧~ 2753:走迷宫 查看提交统计提问 总时间限制: 1000ms 内存限制: 65536kB 描述 一个迷宫由R行C列格子组成&#xff0c;有的格子里有障碍物&#xff0c;不能走&#xff1b;有的格子是空地&#xff0c;可以走。 给定一个迷宫&#xff0c;求从左上角走到右下角最…...

什么是Redis数据一致性?如何解决?

在系统中缓存最常用的策略是&#xff1a;服务端需要同时维护DB和cache&#xff0c;并且是以DB的结果为准–Cache-Aside Pattern&#xff08;缓存分离模式、旁路缓存&#xff09; 读数据 单纯的读数据是不会产生数据不一致&#xff0c;只有并发下读和写才会存在数据不一致。 写…...

【办公软件】开发常用网站

文章目录 一、开发社区二、开发学习三、视图工具四、开发工具五、前端web开发工具六、开发接口官网 备用产看。 https://www.webhub123.com https://www.webhub123.com/#/home/detail?projectHashid59183272&ownerUserid22053727 java全栈只是体系&#xff1a;https://www…...

车道线检测_Canny算子边缘检测_1

Canny算子边缘检测&#xff08;原理&#xff09; Canny算子边缘检测是一种经典的图像处理算法&#xff0c;由John F. Canny于1986年提出&#xff0c;用于精确、可靠地检测数字图像中的边缘特征。该算法设计时考虑了三个关键目标&#xff1a;低错误率&#xff08;即尽可能多地检…...

kubadm部署kubernetes

什么是kubernetes Kubernetes是一款应用于集群的&#xff0c;容器自动部署、扩展和管理的开源平台&#xff0c;提供了一种以容器为中心的基础架构。利用kubernetes&#xff0c;你可以快速高效地响应客户如下请求&#xff1a; 应用程序的动态、精准部署应用程序的动态扩展无缝推…...

Sqlite插入单引号和双引号,防止sql注入

1. 方法1 sqlite3_mprintf替换sprintf,%q替换%s. 1.1. 举例 修改前代码 //修改前, hello123写入失败char sql[1000]char* sql sprintf("UPDATE table SET name %s WHERE name_id %d","hello123", 1);rc sqlite3_exec(db, sql, NULL, NULL, &err…...

代码随想录算法训练营第二十九天(回溯5)|491. 非递减子序列、46. 全排列、47. 全排列 II(JAVA)

文章目录 491. 非递减子序列解题思路源码 46. 全排列解题思路源码 47. 全排列 II解题思路源码 总结 491. 非递减子序列 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 …...

【CANN训练营笔记】AscendCL图片分类应用(C++实现)

样例介绍 基于PyTorch框架的ResNet50模型&#xff0c;对*.jpg图片分类&#xff0c;输出各图片所属分类的编号、名称。 环境介绍 华为云AI1s CPU&#xff1a;Intel Xeon Gold 6278C CPU 2.60GHz 内存&#xff1a;8G NPU&#xff1a;Ascend 310 环境准备 下载驱动 wget ht…...

从头开发一个RISC-V的操作系统(二)RISC-V 指令集架构介绍

文章目录 前提ISA的基本介绍ISA是什么CISC vs RISCISA的宽度 RISC-V指令集RISC-V ISA的命名规范模块化的ISA通用寄存器Hart特权级别内存管理与保护异常和中断 目标&#xff1a;通过这一个系列课程的学习&#xff0c;开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提…...

uniapp/设置桌面角标/发送系统通知/动态修改桌面应用图标/展示3d模型/仿淘宝二楼

uniapp的安卓apk图标角标设置消息数量 1、主要方法&#xff1a; 设置角标&#xff1a; plus.runtime.setBadgeNumber(999) 清除角标&#xff1a; //plus.runtime.setBadgeNumber(0)//没有效果 plus.runtime.setBadgeNumber(-1) //有效果 2、使用在具体的生命周期 1、打开app获取…...

【Java八股学习】Redis高可用 思维导图

说明 文章内容通过学习小林Coding内的优质文章后整理而来&#xff0c;整理成思维导图的方式是为了帮助自己理解、记忆和复习。如若侵权请联系删除&#xff0c;再次对小林Coding内的优质文章表示感谢。参考文章如下&#xff1a; 主从复制是怎么实现的&#xff1f;为什么要有哨…...

C++万物起源:类与对象(三)拷贝构造、赋值重载

目录 一、拷贝构造函数 1.1拷贝构造函数的概念与特征 1.2拷贝构造的实现 1.3默认构造函数 1.4拷贝构造函数典型调用场景 二、赋值运算符重载 2.1赋值运算符重载的格式 一、拷贝构造函数 1.1拷贝构造函数的概念与特征 在c语言语法中&#xff0c;我们可以将一个变量赋值给…...

JavaScript构造函数(new构造js对象与原型链prototype)

构造函数详解 铺垫&#xff1a;面向对象编程一、构造函数是什么&#xff1f;二、构造函数的作用&#xff1f;三、构造函数的执行过程&#xff1f;四、构造函数的返回值&#xff1f;五、构造函数为什么要用new关键字调用&#xff1f;六、构造函数的实例成员和静态成员&#xff1…...

【WPF应用31】WPF基本控件-ListView的详解与示例

WPF&#xff08;Windows Presentation Foundation&#xff09;是.NET框架的一个组成部分&#xff0c;它用于构建桌面应用程序的用户界面。ListView是WPF中一个非常强大的数据展示控件&#xff0c;它可以用来显示一系列的项&#xff0c;类似于Windows资源管理器中的文件列表。Li…...

别再乱配了!SpringBoot配置文件加载顺序的实战避坑指南(附优先级图解)

SpringBoot配置加载优先级深度解析&#xff1a;从原理到实战避坑 SpringBoot的配置加载机制看似简单&#xff0c;实则暗藏玄机。许多开发者在使用过程中都曾遇到过配置不生效、覆盖关系混乱的问题&#xff0c;尤其是在多环境部署或使用外部配置时。本文将深入剖析SpringBoot配置…...

运维实战:ESXi主机物理网卡闪断致部分VM网络中断的排查与应急恢复

1. 故障现象与初步判断 那天凌晨2点15分&#xff0c;值班手机突然响起刺耳的告警声。监控系统显示&#xff0c;ESXi主机上的三台关键业务虚拟机网络连接中断&#xff0c;而其他虚拟机却运行正常。这种部分VM断网的情况立刻引起了我的警觉——这通常意味着问题出在物理层而非虚拟…...

用树莓派+Python玩转无源蜂鸣器:手把手教你编一首《欢乐颂》(代码可调)

用树莓派Python玩转无源蜂鸣器&#xff1a;手把手教你编一首《欢乐颂》&#xff08;代码可调&#xff09; 在创客圈里&#xff0c;树莓派一直被誉为"万能小板"&#xff0c;而Python则是入门门槛最低的编程语言之一。当这两者相遇&#xff0c;再搭配上一个简单的无源蜂…...

自建AI编程助手服务:Recodex部署与Codex API代理实战

1. 项目概述与核心价值最近在折腾AI编程助手&#xff0c;发现OpenAI的Codex模型确实好用&#xff0c;但直接访问官方服务总是不太稳定&#xff0c;速度也时快时慢&#xff0c;对于需要深度集成的开发工作来说&#xff0c;体验不够丝滑。于是&#xff0c;我花了不少时间研究自建…...

如何用WeChatMsg永久备份微信聊天记录?3步完成数据存档与深度分析

如何用WeChatMsg永久备份微信聊天记录&#xff1f;3步完成数据存档与深度分析 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendi…...

深度解析Windows Defender移除技术:高级系统优化与安全组件管理架构实现指南

深度解析Windows Defender移除技术&#xff1a;高级系统优化与安全组件管理架构实现指南 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitco…...

LNG船BOG再液化系统流程优化与动态蒸发率控制【附模型】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;液氮预冷BOG缓冲再液化系统流程设计与Aspen HYSYS建模…...

见素抱朴的 SAP UI5 开发之道, 从「绝圣弃智」到少代码、少炫技、少内耗的前端工程

《道德经》第十九章说, 「绝圣弃智,民利百倍;绝仁弃义,民复孝慈;绝巧弃利,盗贼无有。此三者以为文不足。故令有所属,见素抱朴,少私寡欲。」通行本的这段文字,最容易被误读成反知识、反技术、反规范。放到 SAP UI5 开发里,这种误读尤其危险。SAP UI5 本来就是一个工程…...

从 CDS 到服务契约,读懂 ABAP Cloud 的 Model-Driven Architecture

很多做 RAP 的同学,在 ADT 里第一次同时创建 CDS view entity、behavior definition、service definition、service binding 的时候,直觉往往是,为什么对象一下子变这么多。等项目真正推进到发票、销售订单、主数据维护、审批动作、事件集成这些场景,就会慢慢体会到,这套做…...

DAY 4.链表中环的入口节点

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、链表中环的入口节点二、代码实现2.结论总结前言 一、链表中环的入口节点 思路&#xff1a;使用快慢指针&#xff0c;都从头节点出发&#xff0c;快指针一次…...