天工造物局 C语言中的位运算和逻辑运算

C语言中的位运算和逻辑运算

位运算

C语言中的位运算包括与(&),或(|),亦或(^),非(~).

下面的代码包扩了这些基本运算,还有一个两个数的交换(不用第三个数)。

#include<stdio.h> #include<stdlib.h> //print a int in binary void 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; }


转载于:https://blog.51cto.com/8672742/1368317

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐

  • 浏览量 566
  • 收藏 0
  • 0

所有评论(0)

查看更多评论 
已为社区贡献10条内容