草庐IT

逍遥自在学C语言 | 位运算符>>的高级用法

前言在上一篇文章中,我们介绍了运算符的高级用法,本篇文章,我们将介绍>>运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、优化除法运算除法运算需要比位移运算需要更多的计算资源,某些情况下采用位移运算可以提高性能代码示例#includeintmain(){inta=1024;intb=a/8;//整除8intc=a>>3;//相当于除以8printf("b=%d,c=%d\n",b,c);return0;}每右移一位相当于除以2,a>>3相当于a/(2*2*2)=a/8;运行结果三、获取字节序大端模式

逍遥自在学C语言 | 位运算符>>的高级用法

前言在上一篇文章中,我们介绍了运算符的高级用法,本篇文章,我们将介绍>>运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、优化除法运算除法运算需要比位移运算需要更多的计算资源,某些情况下采用位移运算可以提高性能代码示例#includeintmain(){inta=1024;intb=a/8;//整除8intc=a>>3;//相当于除以8printf("b=%d,c=%d\n",b,c);return0;}每右移一位相当于除以2,a>>3相当于a/(2*2*2)=a/8;运行结果三、获取字节序大端模式

逍遥自在学C语言 | 位运算符<<的高级用法

前言在上一篇文章中,我们介绍了~运算符的高级用法,本篇文章,我们将介绍运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、计算2的整数次幂代码示例#includeintmain(){intx=1;printf("请输入2的次方数:");scanf("%d",&x);inty=1运行结果三、将一个字节序列合并为一个整数例如,将4个字节组成的字节序列b合并为一个整数代码示例#includeintmain(){unsignedcharb[4]={0x12,0x34,0x56,0x78};unsignedin

逍遥自在学C语言 | 位运算符<<的高级用法

前言在上一篇文章中,我们介绍了~运算符的高级用法,本篇文章,我们将介绍运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、计算2的整数次幂代码示例#includeintmain(){intx=1;printf("请输入2的次方数:");scanf("%d",&x);inty=1运行结果三、将一个字节序列合并为一个整数例如,将4个字节组成的字节序列b合并为一个整数代码示例#includeintmain(){unsignedcharb[4]={0x12,0x34,0x56,0x78};unsignedin

逍遥自在学C语言 | 位运算符~的高级用法

前言在上一篇文章中,我们介绍了^运算符的高级用法,本篇文章,我们将介绍~运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、相反数我们可以利用负数的补码性质,来获得一个正数的相反数#includeintmain(){inta=18;printf("相反数为%d\n",~a+1);return0;}运行结果三、替换加法利用相反数的规则,我们可以替换掉加法运算中的加号a+b=a-(-b)=a-(~b+1)最终得到a+b=a-~b-1#includeintmain(){inta=23;intb=7;prin

逍遥自在学C语言 | 位运算符~的高级用法

前言在上一篇文章中,我们介绍了^运算符的高级用法,本篇文章,我们将介绍~运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、相反数我们可以利用负数的补码性质,来获得一个正数的相反数#includeintmain(){inta=18;printf("相反数为%d\n",~a+1);return0;}运行结果三、替换加法利用相反数的规则,我们可以替换掉加法运算中的加号a+b=a-(-b)=a-(~b+1)最终得到a+b=a-~b-1#includeintmain(){inta=23;intb=7;prin

逍遥自在学C语言 | 位运算符^的高级用法

前言在上一篇文章中,我们介绍了|运算符的高级用法,本篇文章,我们将介绍^运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、交换两个变量的值#includeintmain(){inta=10;intb=20;printf("交换前:a=%d,b=%d\n",a,b);a^=b;b^=a;a^=b;printf("交换后:a=%d,b=%d\n",a,b);return0;}两个相同的数,异或结果为0第一次的a^=b等价于a=a^bb^=a此时等价于b=b^a^b,结果为b=a第二次的a^=b此时等价于

逍遥自在学C语言 | 位运算符^的高级用法

前言在上一篇文章中,我们介绍了|运算符的高级用法,本篇文章,我们将介绍^运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、交换两个变量的值#includeintmain(){inta=10;intb=20;printf("交换前:a=%d,b=%d\n",a,b);a^=b;b^=a;a^=b;printf("交换后:a=%d,b=%d\n",a,b);return0;}两个相同的数,异或结果为0第一次的a^=b等价于a=a^bb^=a此时等价于b=b^a^b,结果为b=a第二次的a^=b此时等价于

逍遥自在学C语言 位运算符 "|" 的5种高级用法

前言在上一篇文章中,我们介绍了&运算符的高级用法,本篇文章,我们将介绍|运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、将两个字节合并成一个16位整数#includeintmain(){unsignedcharlowByte=0x12;//00010010unsignedcharhighByte=0x34;//00110100unsignedshortresult=(highByte三、将一个字节的低4位和高4位交换#includeintmain(){unsignedchardata=0xab;/

逍遥自在学C语言 位运算符 "|" 的5种高级用法

前言在上一篇文章中,我们介绍了&运算符的高级用法,本篇文章,我们将介绍|运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、将两个字节合并成一个16位整数#includeintmain(){unsignedcharlowByte=0x12;//00010010unsignedcharhighByte=0x34;//00110100unsignedshortresult=(highByte三、将一个字节的低4位和高4位交换#includeintmain(){unsignedchardata=0xab;/
12