位运算就是对字节或字内的二进制数位进行测试、抽取、设置或移位等操作。其操作对象不能是float、double、long double等其他数据类型,只能是char和int类型。 C语言提供如下表格的六种位运算符,其中,只有按位取反运算符为单目运算符,其他运算符都是双目运算符。 总概 位运算符 补充:单目运算符:只对一个操作数进...
按位或(|): 规则:两个对应的二进制位只要有一个为 1 时,结果位为 1,否则为 0。 例如:5(二进制为 0101)与 3(二进制为 0011)进行按位或运算,结果为 0111,即 7。 按位异或(^): 规则:两个对应的二进制位不同时,结果位为 1,相同时为 0。 例如:5(二进制为 0101)与 3(二进制为 0011)进行按位...
int divTwo(int n){//负奇数的运算不可用 return n >> 1;//除以2 } intdivTwo(int n){//负奇数的运算不可用 return n >>1;//除以2 } 6.乘以2的m次方 int mulTwoPower(int n,int m){//计算n*(2^m) return n << m; } intmulTwoPower(int n,int m){//计算n*(2^m) return n <<...
运算规则:对运算符<<左边的运算量的每一位全部左移右边运算量表示的位数,右边空出的位补0。 【例】a<<2表示将a的各位依次向左移2位,a的最高2位移出去舍弃,空出的低2位以0填补。 例:char a=0x21; 则a<<2的过程 0010 0001〈〈2 = 1000 0100;即 a<<2的值为0x84。 左移1位相当于该数乘以2,左...
- 右移运算符(>>):把一个二进制数的每一位向右移动指定的位数,左边空出的位根据数值的正负情况而定,正数用0填充,负数用1填充,相当于除以2的指定次方。- 按位与运算符(&):把两个二进制数的每一位进行逻辑与操作,只有两个位都是1时,结果才是1,否则是0。- 按位或运算符(|):把两个二进制...
1.计算绝对值: 这个例子演示了如何使用位运算计算一个整数的绝对值,避免使用条件语句和乘法。它的原理是利用了补码表示中,负数的绝对值为取反加1。输出为:Absolute value of -10 is 10 2.求两个数的平均值: 这个例子使用位运算求两个整数的平均值,避免整数溢出。它的原理是利用了两个数的和除以2等于右...
1、右移,除以2右移n位除以2的n次方;右移的概念和左移相反,就是往右边挪动若干位,运算符是>>;右移对符号位的处理和左移不同,对于有符号整数来说,比如int类型,右移会保持符号位不变,例如:inti=0x80000000;i=i>>1;//i的值不会变成0x40000000,而会变成0xc0000000 2、左移,乘以2...
C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移,相当与*2 >> 右移,正数高位补0,负数由计算机决定 循环左移k次 (x<<k) | (x >> (32-k)), 循环右移k次 (x>>k) | (x << (32-k)) 虽然运算符的种类不多,不过常常优先级问题而犯错~~~ ...
2.1 双目算术运算符 1)+ :加法,把两个操作数相加 2)- :减法,从第一个操作数中减去第二个操作数 3)* :乘法,把两个操作数相乘 4)/ :除法,第一个操作数除以第二个操作数 5)% :求模(取余),第一个操作数除以第二个操作数所得余数 双目运算符中,C语言中的加号、减号与数学中的一样。乘号、除号因为...
2> 第2行中的10和4都是整型,计算机中的运算有个原则:相同数据类型的值才能进行运算,而且运算结果依然是同一种数据类型。因此,整数除于整数,求出来的结果依然是整数,会损失小数部分。最后变量b的值是2。查看输出结果: 3> 如果想让 整数除于整数 不损失精度的话,可以将某个整数强制转换为浮点型数据 ...