网站代码优化的内容有哪些,网站建设实训课实训心得,百度竞价推广开户联系方式,佛山网站建设服务器C语言提供了六种位运算符#xff1a; 按位与| 按位或^ 按位异或~ 取反 左移#xff0c;相当与*2 右移#xff0c;正数高位补0#xff0c;负数由计算机决定循环左移k次 (xk) | (x (32-k)),循环右移k次 (xk) | (x (3…C语言提供了六种位运算符 按位与| 按位或^ 按位异或~ 取反 左移相当与*2 右移正数高位补0负数由计算机决定 循环左移k次 (xk) | (x (32-k)), 循环右移k次 (xk) | (x (32-k))虽然运算符的种类不多不过常常优先级问题而犯错~~~优先级别运算符记忆口诀 () [] . -括号成员第一; //括号运算符[]() 成员运算符. -全体单目第二; //所有的单目运算符比如、 --、 (正)、 -(负) 、指针运算*、乘除余三,加减四; //这个余是指取余运算即%移位五关系六; //移位运算符 关系 等等于(与)不等排第七; //即 和!位与异或和位或; //这几个都是位运算: 位与()异或(^)位或(|) 三分天下八九十; 逻辑或跟与; //逻辑运算符:|| 和 十二和十一; //注意顺序:优先级(||) 底于 优先级() 条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和,高逗号运算级最低! //逗号运算符优先级最低 按位与运算按位与运算符是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时结果位才为1否则为0。参与运算的数以补码方式出现。例如95可写算式如下00001001 (9的二进制补码)00000101 (5的二进制补码)00000001 (1的二进制补码)可见951。按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 保留低八位可作a255运算255 的二进制数为0000000011111111。按位或运算按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时结果位就为1。参与运算的两个数均以补码出现。例如9|5可写算式如下00001001|0000010100001101 (十进制为13)可见9|513按位异或运算按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或当两对应的二进位相异时结果为1。参与运算数仍以补码出现例如9^5可写成算式如下00001001^0000010100001100 (十进制为12)求反运算求反运算符~为单目运算符具有右结合性。其功能是对参与运算的数的各二进位按位求反。例如~9的运算为~(0000000000001001)结果为1111111111110110左移运算左移运算符“”是双目运算符。其功能把“ ”左边的运算数的各二进位全部左移若干位由“”右边的数指定移动的位数高位丢弃低位补0。例如a4指把a的各二进位向左移动4位。如a00000011(十进制3)左移4位后为00110000(十进制48)。右移运算右移运算符“”是双目运算符。其功能是把“”左边的运算数的各二进位全部右移若干位“”右边的数指定移动的位数。例如设 a15a2表示把000001111右移为00000011(十进制3)。注意对于有符号数在右移时符号位将随同移动。当为正数时最高位补0而为负数时符号位为1 最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。简单运用一交换两个数字符,不用第三个变量就可以交换两个变量的值了 用异或^,原理两次异或能还原即a (a^b) ^ b二判断一个数是不是2的幂次 原理2的幂次的二进制表示中只有一位是1其他位为0 x x(x-1)是让x的二进制码最右侧的1置为0如果结果为0就表示原先x只有1位是1其他位为0 inline bool is2pow(int x) { return (x(x-1)0 (x!0)); } inline bool is2pow(int x) { return ( (x-x)x ); }三求一个整数有多少位是0 原理同上。用x(x-1)1intcount 0;2while(x)3{4count;5x (x-1);6}四二进制快速求幂1longpow(intx, unsignedint n){2longp 1;3while (n){4if(n 1) p * x;5x * x;6n 1;7 }8return p;9}五判断奇偶数 原理奇数最后一位为1偶数为0 inline bool odd(int x) { return x1; } inline bool even(int x) {return !(x1); } n%2 n1 n%4 n3 n%8 n7 ……六求x绝对值 原理x为正数时不做改变为负数时取反加1 x为正数时y 0 0000 0000 0000 0000 x为负数时y -1 1111 1111 1111 1111 跟0异或是本身跟1异或是取反1inlineintabs(int x){2inty x 31;3return( x^y-y);4}七对2的幂次取模 原理xy取出x和y二进制位1的所有位。x^y1取出x,y只有一个二进制位1的并除以2 return (xy) (x^y)1); 不用位运算时注意 (xy)/2,有可能会溢出。 x向上取整到y其中y2^n (字节对齐用) #define rund(x,y) ( ((x)(y)-1)~((y)-1) )八其他 只有第k位为1的数 1 (k-1) 后k位为均为1的数 (1k)-1 x 的第k1位 x k 1 x的第k1位置1 x k |(1 k) x的第k1位置0 x k ~(1 k) 注意左移1位再右移1位不一定时原先的值位运算的很多知识点都需要深入的理解贯通加油让我们一起进步我会帮助大家在我的经验上期总结一些学习的方法和注意的知识点有什么不理解的欢迎私信哦我也准备了一些资料帮助大家欢迎大家滴滴一起加油进步。