源码可以做网站吗,网站制作公司的网站,助孕网站优化推广,温州小程序开发哪家好按位与运算符#xff08;#xff09; 参加运算的两个数据#xff0c;按二进制位进行“与”运算。 运算规则#xff1a;000; 010; 100; 111; 即#xff1a;两位同时为“1”#xff0c;结果才为“1”#xff0c;否则为0 例如#xff1… 按位与运算符 参加运算的两个数据按二进制位进行“与”运算。 运算规则000; 010; 100; 111; 即两位同时为“1”结果才为“1”否则为0 例如35 即 0000 0011 0000 0101 0000 0001 因此35的值得1。 另负数按补码形式参加按位与运算。 “与运算”的特殊用途 1清零。如果想将一个单元清零即使其全部二进制位为0只要与一个各位都为零的数值相与结果为零。 2取一个数中指定位 方法找一个数对应X要取的位该数的对应位为1其余位为零此数与X进行“与运算”可以得到X中的指定位。 例设X10101110 取X的低4位用 X 0000 1111 0000 1110 即可得到 还可用来取X的2、4、6位。 按位或运算符| 参加运算的两个对象按二进制位进行“或”运算。 运算规则0|00 0|11 1|01 1|11 即 参加运算的两个对象只要有一个为1其值为1。 例如:3|5 即 0000 0011 | 0000 0101 0000 0111 因此3|5的值得7。 另负数按补码形式参加按位或运算。 “或运算”特殊作用 1常用来对一个数据的某些位置1。 方法找到一个数对应X要置1的位该数的对应位为1其余位为零。此数与X相或可使X中的某些位置1。 例将X10100000的低4位置1 用 X | 0000 1111 1010 1111即可得到。 异或运算符^ 参加运算的两个数据按二进制位进行“异或”运算。 运算规则0^00 0^11 1^01 1^10 即参加运算的两个对象如果两个相应位为“异”值不同则该位结果为1否则为0。 “异或运算”的特殊作用 1使特定位翻转 找一个数对应X要翻转的各位该数的对应位为1其余位为零此数与X对应位异或即可。 例X10101110使X低4位翻转用X ^ 0000 1111 1010 0001即可得到。 2与0相异或保留原值 X ^ 0000 0000 1010 1110。 从上面的例题可以清楚的看到这一点。 取反运算符~ 参加运算的一个数据按二进制位进行“取反”运算。 运算规则~10 ~01 即对一个二进制数按位取反即将0变11变0。 使一个数的最低位为零可以表示为a~1。 ~1的值为1111111111111110再按“与”运算最低位一定为0。因为“~”运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。 左移运算符 将一个运算对象的各二进制位全部左移若干位左边的二进制位丢弃右边补0。 例a a 2 将a的二进制位左移2位右补0 左移1位后a a * 2; 若左移时舍弃的高位不包含1则每左移一位相当于该数乘以2。 右移运算符 将一个数的各二进制位全部右移若干位正数左补0负数左补1右边丢弃。 操作数每右移一位相当于该数除以2。 例如a a 2 将a的二进制位右移2位 左补0 or 补1 得看被移数是正还是负。 运算符把 expression1 的所有位向右移 expression2 指定的位数。expression1 的符号位被用来填充右移后左边空出来的位。向右移出的位被丢弃。 例如下面的代码被求值后temp 的值是 -4 -14 即二进制的 11110010右移两位等于 -4 即二进制的 11111100。 var temp -14 2 无符号右移运算符 运算符把 expression1 的各个位向右移 expression2 指定的位数。右移后左边空出的位用零来填充。移出右边的位被丢弃。 例如var temp -14 2 变量 temp 的值为 -14 即二进制的 11111111 11111111 11111111 11110010向右移两位后等于 1073741820 即二进制的 00111111 11111111 11111111 11111100。 复合赋值运算符 位运算符与赋值运算符结合组成新的复合赋值运算符它们是 例a b 相当于aa b | 例a | b 相当于aa | b 例a b 相当于aa b 例a b 相当于aa b ^ 例a ^ b 相当于aa ^ b 运算规则和前面讲的复合赋值运算符的运算规则相似。 不同长度的数据进行位运算 如果两个不同长度的数据进行位运算时系统会将二者按右端对齐然后进行位运算。 以“与”运算为例说明如下我们知道在C语言中long型占4个字节int型占2个字节如果一个long型数据与一个int型数据进行“与”运算右端对齐后左边不足的位依下面三种情况补足 1如果整型数据为正数左边补16个0。 2如果整型数据为负数左边补16个1。 3如果整形数据为无符号数左边也补16个0。 如long a123;int b1;计算a b。 如long a123;int b-1;计算a b。 如long a123;unsigned int b1;计算a b。