C语言中的位运算和逻辑运算
来源:互联网 发布:java软件开发技术 编辑:程序博客网 时间:2024/06/05 21:03
位运算
C语言中的位运算包括与(&),或(|),亦或(^),非(~).
下面的代码包扩了这些基本运算,还有一个两个数的交换(不用第三个数)。
#include<stdio.h>#include<stdlib.h>//print a int in binaryvoid bit_print(int a){ int i; int n=16; int mask = 1 << (n-1); for(i = 1; i <= n; ++i) { putchar(((a & mask) == 0) ? '0' : '1'); a <<= 1; if(i %8 == 0 && i < n)putchar(' '); } printf("\n");}void inplace_swap(int *x,int *y){*y=*x^*y;*x=*x^*y;*y=*x^*y;}int main(){int a=19,b=38;printf("a: ");bit_print(a);printf("b: ");bit_print(b);printf("~a: ");bit_print(~a);printf("a&b:");bit_print(a&b);printf("a|b:");bit_print(a&b);printf("a^b:");bit_print(a^b);printf("a=%d,b=%d\n",a,b);inplace_swap(&a,&b);printf("After swap:\n");printf("a=%d,b=%d\n",a,b);return 1;}
逻辑运算
逻辑运算包括||,&&,!,对应逻辑运算的或,与,非。逻辑运算的结果只有两种,TRUE或者FALSE。0对应FALSE,非0都是TRUE。
逻辑运算包括一个短路求值的特征:如果对第一个参数求值就能确定表达式的结果,那么逻辑表达式就不会对第二个参数求值。
一个简单的例子:
#include<stdio.h>int main(){int a=32,b=43;printf("a:%d,b:%d\n",a,b);printf("!a:%d,a||b:%d,a&&b:%d\n",!a,a||b,a&&b);printf("a++||b--:%d\n",a++||b--);printf("a:%d,b:%d\n",a,b);//printf("Hello\n");return 1;}
- C语言中的位运算和逻辑运算
- C语言中的位运算和逻辑运算
- 信息存储---C语言中的位运算和逻辑运算
- C语言中的逻辑运算符和位运算符总结
- C语言中的逻辑运算符和位运算符
- C语言中的逻辑运算符和位运算符总结
- [深入理解计算机系统]C语言中的位运算、逻辑运算和移位运算
- C和C++中的逻辑运算和位运算
- c语言逻辑运算与位运算区别
- 【C语言】移位运算符、位运算符、逻辑运算符
- 逻辑运算和位运算
- 逻辑运算和位运算
- 位运算和逻辑运算
- 逻辑运算和位运算
- 每天一看---c中的位级运算、逻辑运算、移位运算
- C语言中逻辑运算符(&&,||,!)和位运算符号(&,|,^)的区别
- 关于C语言中逻辑运算和位运算的差别(记一笔)
- IOS开发---C语言-⑦逻辑运算符和位运算符
- Android异常总结---W/System.err(661): java.lang.IllegalStateException: End of document.
- 智能指针(三):unique_ptr使用简介
- AST in JDT
- 算法题目练习
- 最长公共上升子序列(LCIS)的O(n^2)算法
- C语言中的位运算和逻辑运算
- Eclipse更改默认字符集 设置UTF-8
- iOS Cookbook1 Objective-C 字符串
- 腾讯马拉松-为什么时光不能倒流-hdu4510
- hdu 3068(扩展KMP)
- 黑马程序员 面试技巧<二>--->交通灯管理系统
- 浅谈windows句柄表
- EOJ 2855 贪吃蛇 [2011年研究生机试 热身]
- 每日阅读4之linux内核设计与实现——linux调度实现之调度器入口