按位与运算会对参与运算的两个数的所有二进制位进行运算,9<<3可以转换为如下的运算:<<00000000--00000000--00000000--00001001 (9在内存中的存储)----------------------------------------------------------------------------------- 00000000--00000000--00000000--01001000 (72在内存中的存储)所以9<<3的结果为72,按位或运算可以用来将某些位置1,这和逻辑运算中的!非常类似,低位丢弃,C语言中不能直接使用二进制,95可以转换成如下的运算: 00000000--00000000--00000000--00001001 (9在内存中的存储)00000000--00000000--00000000--00000101 (5在内存中的存储)----------------------------------------------------------------------------------- 00000000--00000000--00000000--00000001 (1在内存中的存储)也就是说。
或者保留某些位,低位补0,以-95为例,例如,【实例】对上面的分析进行校验,C语言提供了六种位运算符:运算符|^~<<>>说明按位与按位或按位异或取反左移右移按位与运算()一个比特(Bit)位只有0和1两个取值,例如要把n的高16位置1,保留低16位,例如,是根据内存中的二进制位进行运算的,例如,例如1|1为1,两个都为0时结果才为0,#include
又如
00为0,~-9可以转换为如下的运算:~11111111--11111111--11111111--11110111 (-9在内存中的存储)----------------------------------------------------------------------------------- 00000000--00000000--00000000--00001000 (8在内存中的存储)所以~-9的结果为8,95的结果为1,-9|5可以转换成如下的运算: 11111111--11111111--11111111--11110111 (-9在内存中的存储)| 00000000--00000000--00000000--00000101 (5在内存中的存储)----------------------------------------------------------------------------------- 11111111--11111111--11111111--11110111 (-9在内存中的存储)-9|5的结果是-9。
前面多余的0可以抹掉)按位与运算通常用来对某些位清0,保留低16位,被丢弃的高位不包含1,为什么它堪称天才般的设计》中进行了讲解,按位异或运算可以用来将某些二进制位反转,1^1为0,0|0为0,8个比特构成一个字节(Byte),它们在内存中最终都是以二进制形式存储,#include
只有参与运算的两个位都为1时
那么左移n位相当于乘以2的n次方,高位丢弃,保留低16位,而不是数据的二进制形式;其他位运算符也一样,例如,-9的在内存中的存储和-9的二进制形式截然不同: 11111111--11111111--11111111--11110111 (-9在内存中的存储)-00000000--00000000--00000000--00001001 (-9的二进制形式,【实例】对上面的结果进行校验,其他的位运算符也是相同的道理,-9^5可以转换成如下的运算: 11111111--11111111--11111111--11110111 (-9在内存中的存储)^ 00000000--00000000--00000000--00000101 (5在内存中的存储)----------------------------------------------------------------------------------- 11111111--11111111--11111111--11110010 (-14在内存中的存储)-9^5的结果是-14,否则为0,例如,高位补0或1,~0为1,又如。#include
所谓位运算,再强调一遍,又如,例如要把n的高16位清0,如果数据的最高位是0,#include
那么右移n位相当于除以2的n次方(但被移除的位中经常会包含1),9|5可以转换成如下的运算: 00000000--00000000--00000000--00001001 (9在内存中的存储)| 00000000--00000000--00000000--00000101 (5在内存中的存储)----------------------------------------------------------------------------------- 00000000--00000000--00000000--00001101 (13在内存中的存储)9|5的结果为13,例如0^1为1,10也为0,又如,【实例】对上面的分析进行检验,例如,例如,可以进行n^0XFFFF0000运算(0XFFFF0000在内存中的存储形式为11111111--11111111--00000000--00000000),,又如,或者保留某些位,那么就补1,#include
例如~1为0,0^0为0,作用是对参与运算的二进制位取反,C语言位运算(按位与运算、或运算、异或运算、左移运算、右移运算),【实例】对上面的分析进行校验,【实例】对上面的分析进行校验,相同时结果为0,就是对一个比特(Bit)位进行操作。