C生万物C语言宏将整数二进制位的奇偶数位交换
目录
- 题目分析 && 实现思路[位运算]
- 1、获取这个整数的奇数位和偶数位
- 2、使用移位运算使【奇变偶】【偶变奇】
- 3、合并奇数位和偶数位
- ⌨代码分析
- 1、代码展示
- 2、算法图解分析
- 总结与提炼
题目分析 && 实现思路[位运算]
首先来说一下本题的实现思路
相关推荐
-
C语言详细分析宏定义与预处理命令的应用
目录 宏定义与预处理命令 预处理命令 - 宏定义 定义符号常量 定义傻瓜表达式 定义代码段 预定义的宏 函数 VS 宏定义 预处理命令 - 条件式编译 示例 宏定义与预处理命令 预处理阶段:处理宏定义与预处理命令: 编译期:检查代码,分析语法.语义等,最后生成.o或.obj文件: 链接期:链接所有的.o或.obj文件,生成可执行文件. 预处理命令 - 宏定义 定义符号常量 #define PI 3.1415926 #define MAX_N 10000 定义傻瓜表达式 #define MAX(a
-
C语言宏定义的扩展定义讲解
目录 1. 常量宏定义 2. 定义宏函数 3. 宏定义和#号结合 4. 宏定义和两个#结合 5. 宏定义和do…while()的结合 6. #ifdef…#else…#endif 7. #ifndef…#else…#endif 8. #if defined() … #else … #endif 1. 常量宏定义 使用c中的#define 来定义一个常量来表示一年有多少秒 #define SECONDS_PER_YEAR (606024*365)UL 求圆的周长: #define D® (r +
-
C语言交换奇偶位与offsetof宏的实现方法
目录 交换奇偶位 offsetof 宏 总结 交换奇偶位 题目内容:写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换. 注:二进制补码的最低位为第一位,最高位为第三十二位. 示例 1:输入:10输出:5解释:10的二进制补码为00000000000000000000000000001010,交换奇偶位后为00000000000000000000000000000101,该二进制补码为5的二进制补码,故输出为5. 思路:交换奇偶位,其实就当于将偶数位右移了一位,奇数位左移了一位.那现在的问题
-
一文带你搞懂C语言预处理宏定义
目录 预定义符号 #define #define 定义标识符 #define 定义宏 替换规则 # 和## 预定义符号 这些预定义符号都是语言内置的 __FILE__ //进行编译的源文件 __LINE__ //文件当前的行号 __DATE__ //文件被编译的日期 __TIME__ //文件被编译的时间 __STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义 VS环境下未定义__STDC__ ,说明Visual Studio并未完全遵循ANSI C. #define #defi
-
C语言宏定义容易认不清的盲区梳理
目录 1.概念 3.宏不是函数 4.宏定义不是说明或语句 5.宏不是类型定义 6.与之相关的宏定义 7.总结 1.概念 #define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本. 命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义. (1)简单的宏定义: #define<宏名> <字符串> #defineVALUE((sizeof(a))/sizeof(a[0])) (2) 带参数的宏定义 #defin
-
C语言#define定义宏的使用详解
目录 1.宏是什么 2.宏的用法 3. 宏的注意事项 4. 宏和函数的区别 5.命名要求 6. 条件编译 常见条件编译指令及应用场景 1.宏是什么 #define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro). 语法: #define name( parament-list ) stuff parament-list:是一个由逗号隔开的符号表. 2.宏的用法 #define SUM(x,y) ((x)+(y)) int main
-
C语言实现大整数加减运算详解
前言 我们知道,在数学中,数值的大小是没有上限的,但是在计算机中,由于字长的限制,计算机所能表示的范围是有限的,当我们对比较小的数进行运算时,如:1234+5678,这样的数值并没有超出计算机的表示范围,所以可以运算.但是当我们在实际的应用中进行大量的数据处理时,会发现参与运算的数往往超过计算机的基本数据类型的表示范围,比如说,在天文学上,如果一个星球距离我们为100万光年,那么我们将其化简为公里,或者是米的时候,我们会发现这是一个很大的数.这样计算机将无法对其进行直接计算. 可能我们认为实际应
-
C/C++语言宏定义使用实例详解
C/C++语言宏定义使用实例详解 1. #ifndef 防止头文件重定义 在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成 一个可执行文件时,就会出现大量"重定义"的错误.在头文件中实用#ifndef #define #endif能避免头文件的重定义. 方法:例如要编写头文件test.h 在头文件开头写上两行: #ifndef TEST_H #define TEST_H //一般是文件名的大写 头文件结尾写上一行: #endif 这样一个工程文件里同时
-
C语言宏函数container of()简介
在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? 函数还可以这样定义??? 怎么还有0呢??? 哎,算了,还是放弃吧...). 这就是内核大佬们厉害的地方,随便两行代码就让我们怀疑人生,凡是都需要一个过程,慢慢来吧. 其实,原理很简单: 已知结构体type的成员member的地址ptr,求解结构体type的起始地址. type的起始地址 = ptr - size
-
C语言宏定义#define的使用
目录 无参宏定义 定义形式 带参宏定义 定义形式 #和##运算 #运算 用法: ##运算 用法: 变参宏 #ifndef 条件编译 宏定义是高级语言编译器提供的常用语法,其目的是利用某一标识符标识某个文本字符串.在编写程序时,如果程序中反复地使用某个数据或某段程序片段,就可以考虑将这个数据或程序片段定义为宏,然后每个出现该数据或程序片段的地方用宏名替代,选择宏定义来做的好处是程序简洁,可读性好,而且当需要修改这些相同的程序片段时,只要修改宏定义中的字符串即可,不需要修改多处. 宏定义命令:def
-
C语言宏定义结合全局变量的方法实现单片机串口透传模式
何谓透传? 根据百度百科给出的定义如下: 透传,即透明传输(pass-through),指的是在通讯中不管传输的业务内容如何,只负责将传输的内容由源地址传输到目的地址,而不对业务数据内容做任何改变. 在现实单片机产品开发过程中,如果存在多个串口,在调试打印某个模块信息的时候,大多数人的做法是将所有模块的TX.RX.GND引出来,分别接到不同的调试口去,通过PC终端去将这些信息分别打印出来.这样子做难免会弄错,甚至非常繁琐,万一不小心还会接错导致模块烧坏. 于是,透传模式的出现就是为了解决这样的问
-
C语言数据(整数、浮点数)在内存中的存储
本篇主要讨论:整数.浮点数在内存中是怎么保存的! 数据类型详细介绍 在前面C语言基础概览中,已经提到过了基本的C语言内置类型,但C语言的数据类型有无数种~ 但是可以把这些类型分为几个大类: 类型的归类: 存整数的 char,short,int,long,long long及所配套的unsigned,int*,int[]- 2.存浮点数的 float,double,float[]- 结构体(结构体在内存中的存储后面在进行讨论~) 整数在内存种的存储: 1.字节序 2.补码 内存窗口 调试模式下的内
-
C语言宏定义使用分析
1.如何区分宏定义中的"宏名称"和"宏字符串"?对于带参数的宏又该注意什么? 在宏定义中,"宏名称"和"宏字符串"是通过"空格"来区分的.编译器在处理时宏定义时,首先从"#define"后第一个空格开始读取字符串,直到遇见下一个空格为止,两个空格之间的字符串为"宏名称",确定好"宏名称"之后,本行的所有其他字符串都为"宏字符串"
-
易语言小数转整数进一
小数转整数进一 如:如:1.1转换后为2,0.1或0.6转为1. 无论小数后面是多少都进1 但是整数进来也会加1 源码 .版本 2 .子程序 小数进整数, 小数型, 公开, 如:1.1转换后为2. 无论小数后面是多少都进1 整数进来也会加1 .参数 小数, 小数型 .局部变量 a, 整数型 .局部变量 b, 小数型 b = 到小数 (小数) .判断开始 (a = b ÷ 1 = 真) a = b 返回 (0) .默认 a = b + 1 返回 (a)
随机推荐
- ext读取两种结构的xml的代码
- Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
- 什么叫标准网页设计?
- 解决VUEX刷新的时候出现数据消失
- JavaScript 七大技巧(一)
- 解决MyEclipse下启动项目时JBoss内存溢出的问题
- JS在TextArea光标位置插入文字并实现移动光标到文字末尾
- 理解js回收机制通俗易懂版
- php计算两个整数的最大公约数常用算法小结
- mysql修复数据表的命令方法
- 修改mysql5.5默认编码(图文步骤修改为utf-8编码)
- Android源码学习之组合模式定义及应用
- js判断url是否有效的两种方法
- 理解JS绑定事件
- formValidator3.3的ajaxValidator一些异常分析
- 把html页面的部分内容保存成新的html文件的jquery代码
- js 深拷贝函数
- 详谈$.data()的用法和作用
- 微信小程序 详解Page中data数据操作和函数调用
- 设计windows phone页面主题