c语言中移位操作规则与操作对象的数据类型有关吗 c语言数组移位操作

C\u8bed\u8a00\u4e2d\u79fb\u4f4d\u8fd0\u7b97

1\u3001\u201c\u6309\u4f4d\u4e0e\u201d\u8fd0\u7b97\u7b26\uff08&\uff09
\u6309\u4f4d\u4e0e\u662f\u6307\uff1a\u53c2\u52a0\u8fd0\u7b97\u7684\u4e24\u4e2a\u6570\u636e\uff0c\u6309\u4e8c\u8fdb\u5236\u4f4d\u8fdb\u884c\u201c\u4e0e\u201d\u8fd0\u7b97\u3002\u5982\u679c\u4e24\u4e2a\u76f8\u5e94\u7684\u4e8c\u8fdb\u5236\u4f4d\u90fd\u4e3a1\uff0c\u5219\u8be5\u4f4d\u7684\u7ed3\u679c\u503c\u4e3a1\uff1b\u5426\u5219\u4e3a0\u3002\u8fd9\u91cc\u76841\u53ef\u4ee5\u7406\u89e3\u4e3a\u903b\u8f91\u4e2d\u7684true,0\u53ef\u4ee5\u7406\u89e3\u4e3a\u903b\u8f91\u4e2d\u7684false\u3002\u6309\u4f4d\u4e0e\u5176\u5b9e\u4e0e\u903b\u8f91\u4e0a\u201c\u4e0e\u201d\u7684\u8fd0\u7b97\u89c4\u5219\u4e00\u81f4\u3002\u903b\u8f91\u4e0a\u7684\u201c\u4e0e\u201d\uff0c\u8981\u6c42\u8fd0\u7b97\u6570\u5168\u771f\uff0c\u7ed3\u679c\u624d\u4e3a\u771f\u3002\u82e5\uff0cA=true,B=true,\u5219A\u2229B=true \u4f8b\u5982\uff1a3&5 3\u7684\u4e8c\u8fdb\u5236\u7f16\u7801\u662f11(2)\u3002\uff08\u4e3a\u4e86\u533a\u5206\u5341\u8fdb\u5236\u548c\u5176\u4ed6\u8fdb\u5236\uff0c\u672c\u6587\u89c4\u5b9a\uff0c\u51e1\u662f\u975e\u5341\u8fdb\u5236\u7684\u6570\u636e\u5747\u5728\u6570\u636e\u540e\u9762\u52a0\u4e0a\u62ec\u53f7\uff0c\u62ec\u53f7\u4e2d\u6ce8\u660e\u5176\u8fdb\u5236\uff0c\u4e8c\u8fdb\u5236\u5219\u6807\u8bb0\u4e3a2\uff09\u5185\u5b58\u50a8\u5b58\u6570\u636e\u7684\u57fa\u672c\u5355\u4f4d\u662f\u5b57\u8282\uff08Byte\uff09\uff0c\u4e00\u4e2a\u5b57\u8282\u75318\u4e2a\u4f4d\uff08bit)\u6240\u7ec4\u6210\u3002\u4f4d\u662f\u7528\u4ee5\u63cf\u8ff0\u7535\u8111\u6570\u636e\u91cf\u7684\u6700\u5c0f\u5355\u4f4d\u3002\u4e8c\u8fdb\u5236\u7cfb\u7edf\u4e2d\uff0c\u6bcf\u4e2a0\u62161\u5c31\u662f\u4e00\u4e2a\u4f4d\u3002\u5c0611\uff082\uff09\u8865\u8db3\u6210\u4e00\u4e2a\u5b57\u8282\uff0c\u5219\u662f00000011\uff082\uff09\u30025\u7684\u4e8c\u8fdb\u5236\u7f16\u7801\u662f101\uff082\uff09\uff0c\u5c06\u5176\u8865\u8db3\u6210\u4e00\u4e2a\u5b57\u8282\uff0c\u5219\u662f00000101\uff082\uff09
\u6309\u4f4d\u4e0e\u8fd0\u7b97\uff1a00000011(2)
&00000101(2)
00000001(2)
\u7531\u6b64\u53ef\u77e53&5=1
c\u8bed\u8a00\u4ee3\u7801\uff1a
#include
main(){int a=3;int b = 5;printf("%d",a&b);}
\u6309\u4f4d\u4e0e\u7684\u7528\u9014\uff1a
\uff081\uff09\u6e05\u96f6
\u82e5\u60f3\u5bf9\u4e00\u4e2a\u5b58\u50a8\u5355\u5143\u6e05\u96f6\uff0c\u5373\u4f7f\u5176\u5168\u90e8\u4e8c\u8fdb\u5236\u4f4d\u4e3a0\uff0c\u53ea\u8981\u627e\u4e00\u4e2a\u4e8c\u8fdb\u5236\u6570\uff0c\u5176\u4e2d\u5404\u4e2a\u4f4d\u7b26\u5408\u4e00\u4e0b\u6761\u4ef6\uff1a\u539f\u6765\u7684\u6570\u4e2d\u4e3a1\u7684\u4f4d\uff0c\u65b0\u6570\u4e2d\u76f8\u5e94\u4f4d\u4e3a0\u3002\u7136\u540e\u4f7f\u4e8c\u8005\u8fdb\u884c&\u8fd0\u7b97\uff0c\u5373\u53ef\u8fbe\u5230\u6e05\u96f6\u76ee\u7684\u3002\u4f8b\uff1a\u539f\u6570\u4e3a43\uff0c\u537300101011\uff082\uff09\uff0c\u53e6\u627e\u4e00\u4e2a\u6570\uff0c\u8bbe\u5b83\u4e3a148\uff0c\u537310010100\uff082\uff09\uff0c\u5c06\u4e24\u8005\u6309\u4f4d\u4e0e\u8fd0\u7b97\uff1a
00101011\uff082\uff09
&10010100\uff082\uff09
00000000\uff082\uff09
c\u8bed\u8a00\u6e90\u4ee3\u7801\uff1a
#include main(){int a=43;int b = 148;printf("%d",a&b);}
\uff082\uff09\u53d6\u4e00\u4e2a\u6570\u4e2d\u67d0\u4e9b\u6307\u5b9a\u4f4d\uff1a\u82e5\u6709\u4e00\u4e2a\u6574\u6570a(2byte),\u60f3\u8981\u53d6\u5176\u4e2d\u7684\u4f4e\u5b57\u8282\uff0c\u53ea\u9700\u8981\u5c06a\u4e0e8\u4e2a1\u6309\u4f4d\u4e0e\u5373\u53ef\u3002
a 00101100 10101100
b 00000000 11111111
c 00000000 10101100
\uff083\uff09\u4fdd\u7559\u6307\u5b9a\u4f4d\uff1a\u4e0e\u4e00\u4e2a\u6570\u8fdb\u884c\u201c\u6309\u4f4d\u4e0e\u201d\u8fd0\u7b97\uff0c\u6b64\u6570\u5728\u8be5\u4f4d\u53d61\u3002
\u4f8b\u5982\uff1a\u6709\u4e00\u657084\uff0c\u537301010100\uff082\uff09\uff0c\u60f3\u628a\u5176\u4e2d\u4ece\u5de6\u8fb9\u7b97\u8d77\u7684\u7b2c3\uff0c4\uff0c5\uff0c7\uff0c8\u4f4d\u4fdd\u7559\u4e0b\u6765\uff0c\u8fd0\u7b97\u5982\u4e0b\uff1a
01010100(2)&00111011(2)00010000(2)\u5373\uff1aa=84,b=59c=a&b=16c\u8bed\u8a00\u6e90\u4ee3\u7801\uff1a#include main(){int a=84;int b = 59;printf("%d",a&b);}
2\u3001\u201c\u6309\u4f4d\u6216\u201d\u8fd0\u7b97\u7b26\uff08|\uff09
\u4e24\u4e2a\u76f8\u5e94\u7684\u4e8c\u8fdb\u5236\u4f4d\u4e2d\u53ea\u8981\u6709\u4e00\u4e2a\u4e3a1\uff0c\u8be5\u4f4d\u7684\u7ed3\u679c\u503c\u4e3a1\u3002\u501f\u7528\u903b\u8f91\u5b66\u4e2d\u6216\u8fd0\u7b97\u7684\u8bdd\u6765\u8bf4\u5c31\u662f\uff0c\u4e00\u771f\u4e3a\u771f\u3002\u4f8b\u5982\uff1a60\uff088\uff09|17\uff088\uff09,\u5c06\u516b\u8fdb\u523660\u4e0e\u516b\u8fdb\u523617\u8fdb\u884c\u6309\u4f4d\u6216\u8fd0\u7b97\u3002
00110000|0000111100111111c\u8bed\u8a00\u6e90\u4ee3\u7801\uff1a#include main(){int a=060;int b = 017;printf("%d",a|b);}
\u5e94\u7528\uff1a\u6309\u4f4d\u6216\u8fd0\u7b97\u5e38\u7528\u6765\u5bf9\u4e00\u4e2a\u6570\u636e\u7684\u67d0\u4e9b\u4f4d\u5b9a\u503c\u4e3a1\u3002\u4f8b\u5982\uff1a\u5982\u679c\u60f3\u4f7f\u4e00\u4e2a\u6570a\u7684\u4f4e4\u4f4d\u6539\u4e3a1\uff0c\u5219\u53ea\u9700\u8981\u5c06a\u4e0e17\uff088\uff09\u8fdb\u884c\u6309\u4f4d\u6216\u8fd0\u7b97\u5373\u53ef\u3002
3\u3001\u201c\u5f02\u6216\u201d\u8fd0\u7b97\u7b26\uff08^\uff09
\u4ed6\u7684\u89c4\u5219\u662f\uff1a\u82e5\u53c2\u52a0\u8fd0\u7b97\u7684\u4e24\u4e2a\u4e8c\u8fdb\u5236\u4f4d\u503c\u76f8\u540c\u5219\u4e3a0\uff0c\u5426\u5219\u4e3a1
\u53730\u22270=0\uff0c0\u22271=1\uff0c1\u22270=1\uff0c 1\u22271=0
\u4f8b\uff1a 00111001\u2227 0010101000010011c\u8bed\u8a00\u6e90\u4ee3\u7801\uff1a#include main(){int a=071;int b = 052;printf("%d",a^b);}
\u5e94\u7528\uff1a
\uff081\uff09\u4f7f\u7279\u5b9a\u4f4d\u7ffb\u8f6c\u8bbe\u6709\u657001111010\uff082\uff09\uff0c\u60f3\u4f7f\u5176\u4f4e4\u4f4d\u7ffb\u8f6c\uff0c\u53731\u53d80\uff0c0\u53d81.\u53ef\u4ee5\u5c06\u5176\u4e0e00001111\uff082\uff09\u8fdb\u884c\u201c\u5f02\u6216\u201d\u8fd0\u7b97\u3002
\u5373\uff1a01111010^0000111101110101
\u8fd0\u7b97\u7ed3\u679c\u7684\u4f4e4\u4f4d\u6b63\u597d\u662f\u539f\u6570\u4f4e4\u4f4d\u7684\u7ffb\u8f6c\u3002\u53ef\u89c1\uff0c\u8981\u4f7f\u54ea\u51e0\u4f4d\u7ffb\u8f6c\u5c31\u5c06\u4e0e\u5176\u8fdb\u884c\u2227\u8fd0\u7b97\u7684\u8be5\u51e0\u4f4d\u7f6e\u4e3a1\u5373\u53ef\u3002
(2)\u4e0e0\u76f8\u201c\u5f02\u6216\u201d\uff0c\u4fdd\u7559\u539f\u503c
\u4f8b\u5982\uff1a012^00=01200001010^0000000000001010
\u56e0\u4e3a\u539f\u6570\u4e2d\u76841\u4e0e0\u8fdb\u884c\u5f02\u6216\u8fd0\u7b97\u5f971\uff0c0^0\u5f970\uff0c\u6545\u4fdd\u7559\u539f\u6570\u3002
(3) \u4ea4\u6362\u4e24\u4e2a\u503c\uff0c\u4e0d\u7528\u4e34\u65f6\u53d8\u91cf
\u4f8b\u5982\uff1aa\uff1d3\uff0c\u537311\uff082\uff09\uff1bb\uff1d4\uff0c\u5373100\uff082\uff09\u3002
\u60f3\u5c06a\u548cb\u7684\u503c\u4e92\u6362\uff0c\u53ef\u4ee5\u7528\u4ee5\u4e0b\u8d4b\u503c\u8bed\u53e5\u5b9e\u73b0\uff1a
a\uff1da\u2227b;b\uff1db\u2227a;a\uff1da\u2227b;a\uff1d011(2)\uff08\u2227\uff09b\uff1d100(2)a\uff1d111(2)\uff08a\u2227b\u7684\u7ed3\u679c\uff0ca\u5df2\u53d8\u62107\uff09\uff08\u2227\uff09b\uff1d100(2)b\uff1d011(2)\uff08b\u2227a\u7684\u7ed3\u679c\uff0cb\u5df2\u53d8\u62103\uff09\uff08\u2227\uff09a\uff1d111(2)
a\uff1d100\uff082\uff09\uff08a\u2227b\u7684\u7ed3\u679c\uff0ca\u5df2\u53d8\u62104\uff09
\u7b49\u6548\u4e8e\u4ee5\u4e0b\u4e24\u6b65\uff1a
\u2460 \u6267\u884c\u524d\u4e24\u4e2a\u8d4b\u503c\u8bed\u53e5\uff1a\u201ca\uff1da\u2227b\uff1b\u201d\u548c\u201cb\uff1db\u2227a\uff1b\u201d\u76f8\u5f53\u4e8eb=b\u2227(a\u2227b)\u3002
\u2461 \u518d\u6267\u884c\u7b2c\u4e09\u4e2a\u8d4b\u503c\u8bed\u53e5\uff1a a\uff1da\u2227b\u3002\u7531\u4e8ea\u7684\u503c\u7b49\u4e8e\uff08a\u2227b\uff09\uff0cb\u7684\u503c\u7b49\u4e8e\uff08b\u2227a\u2227b\uff09\uff0c\u56e0\u6b64\uff0c\u76f8\u5f53\u4e8ea=a\u2227b\u2227b\u2227a\u2227b\uff0c\u5373a\u7684\u503c\u7b49\u4e8ea\u2227a\u2227b\u2227b\u2227b\u3002
c\u8bed\u8a00\u6e90\u4ee3\u7801\uff1a#include main(){int a=3;int b = 4;a=a^b;b=b^a;a=a^b;printf("a=%d b=%d",a,b);}
4\u3001\u201c\u53d6\u53cd\u201d\u8fd0\u7b97\u7b26\uff08~\uff09
\u4ed6\u662f\u4e00\u5143\u8fd0\u7b97\u7b26\uff0c\u7528\u4e8e\u6c42\u6574\u6570\u7684\u4e8c\u8fdb\u5236\u53cd\u7801\uff0c\u5373\u5206\u522b\u5c06\u64cd\u4f5c\u6570\u5404\u4e8c\u8fdb\u5236\u4f4d\u4e0a\u76841\u53d8\u4e3a0\uff0c0\u53d8\u4e3a1\u3002
\u4f8b\u5982\uff1a~77(8)
\u6e90\u4ee3\u7801\uff1a
#include main(){int a=077;printf("%d",~a);}
5\u3001\u5de6\u79fb\u8fd0\u7b97\u7b26\uff08<<\uff09
\u5de6\u79fb\u8fd0\u7b97\u7b26\u662f\u7528\u6765\u5c06\u4e00\u4e2a\u6570\u7684\u5404\u4e8c\u8fdb\u5236\u4f4d\u5de6\u79fb\u82e5\u5e72\u4f4d\uff0c\u79fb\u52a8\u7684\u4f4d\u6570\u7531\u53f3\u64cd\u4f5c\u6570\u6307\u5b9a\uff08\u53f3\u64cd\u4f5c\u6570\u5fc5\u987b\u662f\u975e\u8d1f\u503c\uff09\uff0c\u5176\u53f3\u8fb9\u7a7a\u51fa\u7684\u4f4d\u75280\u586b\u8865\uff0c\u9ad8\u4f4d\u5de6\u79fb\u6ea2\u51fa\u5219\u820d\u5f03\u8be5\u9ad8\u4f4d\u3002
\u4f8b\u5982\uff1a\u5c06a\u7684\u4e8c\u8fdb\u5236\u6570\u5de6\u79fb2\u4f4d\uff0c\u53f3\u8fb9\u7a7a\u51fa\u7684\u4f4d\u88650\uff0c\u5de6\u8fb9\u6ea2\u51fa\u7684\u4f4d\u820d\u5f03\u3002\u82e5a=15,\u537300001111\uff082\uff09\uff0c\u5de6\u79fb2\u4f4d\u5f9700111100\uff082\uff09\u3002
\u6e90\u4ee3\u7801\uff1a#include main(){int a=15;printf("%d",a<<2);}
\u5de6\u79fb1\u4f4d\u76f8\u5f53\u4e8e\u8be5\u6570\u4e58\u4ee52\uff0c\u5de6\u79fb2\u4f4d\u76f8\u5f53\u4e8e\u8be5\u6570\u4e58\u4ee52*2\uff1d4,15\uff1c\uff1c2=60\uff0c\u5373\u4e58\u4e864\u3002\u4f46\u6b64\u7ed3\u8bba\u53ea\u9002\u7528\u4e8e\u8be5\u6570\u5de6\u79fb\u65f6\u88ab\u6ea2\u51fa\u820d\u5f03\u7684\u9ad8\u4f4d\u4e2d\u4e0d\u5305\u542b1\u7684\u60c5\u51b5\u3002\u5047\u8bbe\u4ee5\u4e00\u4e2a\u5b57\u8282\uff088\u4f4d\uff09\u5b58\u4e00\u4e2a\u6574\u6570\uff0c\u82e5a\u4e3a\u65e0\u7b26\u53f7\u6574\u578b\u53d8\u91cf\uff0c\u5219a\uff1d64\u65f6\uff0c\u5de6\u79fb\u4e00\u4f4d\u65f6\u6ea2\u51fa\u7684\u662f0\uff0c\u800c\u5de6\u79fb2\u4f4d\u65f6\uff0c\u6ea2\u51fa\u7684\u9ad8\u4f4d\u4e2d\u5305\u542b1\u3002
6\u3001\u53f3\u79fb\u8fd0\u7b97\u7b26\uff08>>\uff09
\u53f3\u79fb\u8fd0\u7b97\u7b26\u662f\u7528\u6765\u5c06\u4e00\u4e2a\u6570\u7684\u5404\u4e8c\u8fdb\u5236\u4f4d\u53f3\u79fb\u82e5\u5e72\u4f4d\uff0c\u79fb\u52a8\u7684\u4f4d\u6570\u7531\u53f3\u64cd\u4f5c\u6570\u6307\u5b9a\uff08\u53f3\u64cd\u4f5c\u6570\u5fc5\u987b\u662f\u975e\u8d1f\u503c\uff09\uff0c\u79fb\u5230\u53f3\u7aef\u7684\u4f4e\u4f4d\u88ab\u820d\u5f03\uff0c\u5bf9\u4e8e\u65e0\u7b26\u53f7\u6570\uff0c\u9ad8\u4f4d\u88650\u3002\u5bf9\u4e8e\u6709\u7b26\u53f7\u6570\uff0c\u5c06\u5bf9\u5de6\u8fb9\u7a7a\u51fa\u7684\u90e8\u5206\u7528\u7b26\u53f7\u4f4d\u586b\u8865\uff08\u5373\u201c\u7b97\u672f\u79fb\u4f4d\u201d\uff09\uff0c\u800c\u53e6\u4e00\u4e9b\u673a\u5668\u5219\u5bf9\u5de6\u8fb9\u7a7a\u51fa\u7684\u90e8\u5206\u75280\u586b\u8865\uff08\u5373\u201c\u903b\u8f91\u79fb\u4f4d\u201d\uff09\u3002\u6ce8\u610f\uff1a\u5bf9\u65e0\u7b26\u53f7\u6570,\u53f3\u79fb\u65f6\u5de6\u8fb9\u9ad8\u4f4d\u79fb\u51650\uff1b\u5bf9\u4e8e\u6709\u7b26\u53f7\u7684\u503c,\u5982\u679c\u539f\u6765\u7b26\u53f7\u4f4d\u4e3a0(\u8be5\u6570\u4e3a\u6b63),\u5219\u5de6\u8fb9\u4e5f\u662f\u79fb\u51650\u3002\u5982\u679c\u7b26\u53f7\u4f4d\u539f\u6765\u4e3a1(\u5373\u8d1f\u6570),\u5219\u5de6\u8fb9\u79fb\u51650\u8fd8\u662f1,\u8981\u53d6\u51b3\u4e8e\u6240\u7528\u7684\u8ba1\u7b97\u673a\u7cfb\u7edf\u3002\u6709\u7684\u7cfb\u7edf\u79fb\u51650,\u6709\u7684\u7cfb\u7edf\u79fb\u51651\u3002\u79fb\u51650\u7684\u79f0\u4e3a\u201c\u903b\u8f91\u79fb\u4f4d\u201d,\u5373\u7b80\u5355\u79fb\u4f4d\uff1b\u79fb\u51651\u7684\u79f0\u4e3a\u201c\u7b97\u672f\u79fb\u4f4d\u201d\u3002
\u4f8b\uff1a a\u7684\u503c\u662f\u516b\u8fdb\u5236\u6570113755\uff1a
a:1001011111101101 \uff08\u7528\u4e8c\u8fdb\u5236\u5f62\u5f0f\u8868\u793a\uff09
a>>1: 0100101111110110 (\u903b\u8f91\u53f3\u79fb\u65f6)
a>>1: 1100101111110110 (\u7b97\u672f\u53f3\u79fb\u65f6)
\u5728\u6709\u4e9b\u7cfb\u7edf\u4e2d,a>>1\u5f97\u516b\u8fdb\u5236\u6570045766,\u800c\u5728\u53e6\u4e00\u4e9b\u7cfb\u7edf\u4e0a\u53ef\u80fd\u5f97\u5230\u7684\u662f145766\u3002Turbo C\u548c\u5176\u4ed6\u4e00\u4e9bC\u7f16\u8bd1\u91c7\u7528\u7684\u662f\u7b97\u672f\u53f3\u79fb,\u5373\u5bf9\u6709\u7b26\u53f7\u6570\u53f3\u79fb\u65f6,\u5982\u679c\u7b26\u53f7\u4f4d\u539f\u6765\u4e3a1\uff0c\u5de6\u9762\u79fb\u5165\u9ad8\u4f4d\u7684\u662f1\u3002
\u6e90\u4ee3\u7801\uff1a#include main(){int a=0113755;printf("%d",a>>1);}
7\u3001\u4f4d\u8fd0\u7b97\u8d4b\u503c\u8fd0\u7b97\u7b26
\u4f4d\u8fd0\u7b97\u7b26\u4e0e\u8d4b\u503c\u8fd0\u7b97\u7b26\u53ef\u4ee5\u7ec4\u6210\u590d\u5408\u8d4b\u503c\u8fd0\u7b97\u7b26\u3002
\u4f8b\u5982: &=, |=, >>=, <<=, \u2227=
\u4f8b\uff1a a & = b\u76f8\u5f53\u4e8e a = a & b
a << =2\u76f8\u5f53\u4e8ea = a << 2

\u601d\u8def\uff1a
\u6240\u6709\u6570\u7ec4\u90fd\u79fb\u4f4d\uff0c\u90a3\u4e48\u5176\u4e2d\u4e00\u4e2a\u5143\u7d20\u7684\u503c\u7684\u6ea2\u51fa\u4f4d\u5c06\u548c\u76f8\u90bb\u7684\u5143\u7d20\u8fdb\u884c\u5408\u5e76\uff0c
\u56e0\u6b64\u53ea\u8981\u8bb0\u4f4f\u4e0a\u4e00\u5143\u7d20\u7684\u6ea2\u51fa\u4f4d\uff0c\u5728\u4e0b\u4e00\u5143\u7d20\u79fb\u52a8\u540e\u5408\u5e76\u5373\u53ef\u3002

#define ELEMCNT 3 //\u5b9a\u4e49\u6570\u7ec4\u5143\u7d20\u4e2a\u6570
char a[ELEMCNT]; //\u88ab\u64cd\u4f5c\u7684\u5143\u7d20
char exceedA=0,exceedB=0;//\u8bb0\u5fc6\u6ea2\u51fa\u4f4d\u7528\u7684\u53d8\u91cf\uff0c\u5176\u4e2dexceedA\u4e3a\u4e0a\u4e00\u5143\u7d20\u6ea2\u51fa\u503c\uff0cexceedB\u4e3a\u672c\u5143\u7d20\u6ea2\u51fa\u503c
//\u5b9a\u4e49\u6574\u4f53\u79fb\u52a8\u51fd\u6570\uff0c\u5176\u4e2dk\u4e3a\u5de6\u79fb\u4f4d\u6570
void LeftElem(int k){
int i;
char Msk=0;//\u7528\u4e8e\u8ba1\u7b97\u6ea2\u51fa\u4f4d\u7684\u63a9\u7801\uff0c\u5982k=6\u65f6\uff0c\u5176\u63a9\u7801\u503c\u4e3a00000011(\u4e8c\u8fdb\u5236)
for (i=0;i<8-k;i++){
Msk=Msk|(1<<i);
}
//\u79fb\u52a8\u6240\u6709\u6570\u7ec4\u5143\u7d20,i\u503c\u5bf9\u5e94\u6570\u7ec4\u5143\u7d20\u4e0b\u6807i-1
for (i=ELEMCNT;i>0;i--){
exceedB=(a[i-1]&(~Msk))>>(8-k);//\u8ba1\u7b97\u6ea2\u51fa\u6570\u636e
a[i-1]=a[i-1]<<k+exceedA;
exceedA=exceedB;
}}

位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算
所以, 结论是 ,和数据类型无关, 不管你是char, int ,long, 都可以使用。
移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移有关。
如果是左移,则规定补入的数全部是0;
如果是右移,还与被移位的数据是否带符号有关。若是不带符号数,则补入的数全部为0;若是带符号数,则补入的数全部等于原数的最左端位上的原数(即原符号位)
例如,设无符号短整型变量unsigend int a=0111(对应二进制数为0000000001001001),
则:a<<3 结果为01110(对应二进制数为0000001001001000),
a>>4 结果为04 (对应二进制数为0000000000000100),
又如,设短整型变量int a=-4(对应二进制数为 1111111111111100),
则:a<<3 结果为-32(对应二进制数为1111111111100000),
a>>4 结果为-1(对应二进制数为1111111111111111),
在C中,左移是逻辑/算术左移(两者完全相同),
但是,左移里一个比较特殊的情况是当左移的位数超过该数值类型的最大位数时,编译器会用左移的位数去模类型的最大位数,然后按余数进行移位,如:
int i = 1, j = 0x80000000; //设int为32位
i = i << 33; // 33 % 32 = 1 左移1位,i变成2
j = j << 33; // 33 % 32 = 1 左移1位,j变成0,最高位被丢弃
在C中,右移是算术右移,会保持符号位不变,最左侧补入的原符号位; 右移是逻辑右移,最左侧补入的数为0
实际应用中可以根据情况用左/右移做快速的乘 /除运算,这样会比循环效率高很多.

#include < stdio.h >

int main(int argc, char **argv)
{
unsigned char v1 = 3;
unsigned char v2 = 0x03;
unsigned char v3 = 0;

v3 = v1 << 2;

  • c璇█涓Щ浣嶆搷浣滆鍒欎笌鎿嶄綔瀵硅薄鐨勬暟鎹被鍨嬫湁鍏冲悧
    绛旓細鎵浠ワ紝 缁撹鏄 锛鍜屾暟鎹被鍨嬫棤鍏筹紝 涓嶇浣犳槸char, int ,long, 閮藉彲浠ヤ娇鐢銆傜Щ浣嶆椂锛岀Щ鍑虹殑浣嶆暟鍏ㄩ儴涓㈠純锛岀Щ鍑虹殑绌轰綅琛ュ叆鐨勬暟涓庡乏绉昏繕鏄彸绉绘湁鍏炽濡傛灉鏄乏绉伙紝鍒欒瀹氳ˉ鍏ョ殑鏁板叏閮ㄦ槸0锛涘鏋滄槸鍙崇Щ锛岃繕涓庤绉讳綅鐨勬暟鎹槸鍚﹀甫绗﹀彿鏈夊叧銆傝嫢鏄笉甯︾鍙锋暟锛屽垯琛ュ叆鐨勬暟鍏ㄩ儴涓0锛涜嫢鏄甫绗﹀彿鏁帮紝鍒欒ˉ...
  • c璇█涓浣嶈繍绠楃殑宸︿綅绉诲彸浣嶇Щ閮芥槸浠涔堟剰鎬
    绛旓細绗竴杩愮畻瀵硅薄鏄Щ浣嶅璞★紝绗簩涓繍绠楀璞℃槸鎵绉荤殑浜岃繘鍒朵綅鏁銆備綅绉讳綅杩愮畻绗︾殑杩愮畻瀵硅薄銆佽繍绠楄鍒欎笌缁撴灉銆佺粨鍚堟у琛2-16鎵绀恒傜Щ浣嶆椂锛岀Щ鍑虹殑浣嶆暟鍏ㄩ儴涓㈠純锛岀Щ鍑虹殑绌轰綅琛ュ叆鐨勬暟涓庡乏绉昏繕鏄彸绉昏姳鎺ユ湪鏈夊叧銆濡傛灉鏄乏绉伙紝鍒欒瀹氳ˉ鍏ョ殑鏁板叏閮ㄦ槸0锛涘鏋滄槸鍙崇Щ锛岃繕涓庤绉讳綅鐨勬暟鎹槸鍚﹀甫绗﹀彿鏈夊叧銆傝嫢鏄笉...
  • C璇█涓,绉讳綅琛ㄧず浠涔?鏈変粈涔堢敤?
    绛旓細姣旇緝娴呮樉鐨勬潵璇达紝宸︾Щn浣嶅氨鏄箻浠2鐨刵娆℃柟锛屽彸绉籲浣嶅氨鏄櫎浠2鐨刵娆℃柟銆傚叿浣撶粏鑺傚涓嬶細C璇█閲岀殑宸︾Щ鍜屽彸绉昏繍绠 2006-09-30 13:52 鍏堣宸︾Щ,宸︾Щ灏辨槸鎶婁竴涓暟鐨勬墍鏈変綅閮藉悜宸︾Щ鍔ㄨ嫢骞蹭綅,鍦–涓敤<<杩愮畻绗.渚嬪:int i = 1;i = i << 2; //鎶奿閲岀殑鍊煎乏绉2浣 涔熷氨鏄,1鐨2杩...
  • c璇█涓鐨>>鍜<<鍒嗗埆鏄粈涔堟剰鎬濆晩?
    绛旓細C璇█涓鐨>>鍜<<鍒嗗埆鏄乏绉昏繍绠楃鍜屽彸绉昏繍绠楃锛岀敤浜庢暣鏁板湪浜岃繘鍒跺舰寮鐨勭Щ浣杩愮畻銆1銆佸乏绉昏繍绠楃锛<<锛瑙勫垯锛氭寜浜岃繘鍒跺舰寮忔妸鎵鏈夌殑鏁板瓧鍚戝乏绉诲姩瀵瑰簲鐨勪綅鏁帮紝楂樹綅绉诲嚭(鑸嶅純)锛屼綆浣嶇殑绌轰綅琛ラ浂銆傝娉曟牸寮忥細闇瑕佺Щ浣嶇殑鏁板瓧 << 绉讳綅鐨勬鏁帮紝渚嬪锛 3 << 2锛屽垯鏄皢鏁板瓧3宸︾Щ2浣嶃傛暟瀛︽剰涔夛細鍦ㄦ暟瀛...
  • C璇█涓鎬庢牱琛ㄧず绉讳綅鍟?渚嬪灏嗘煇涓煎乏绉讳袱浣
    绛旓細鍒╃敤浣嶆搷浣滐細"<<"灏辨槸宸︾Щ ">>"灏辨槸鍙崇Щ 涓句釜渚嬪瓙锛氬皢a宸︾Щ2浣嶏紝鐒跺悗璧嬬粰a a<<=2 涔熷嵆鏄痑=a<<2 鍦–璇█涓乏绉1浣嶏紝鐩稿綋浜庝箻2锛屽彸绉荤浉褰撲簬闄2銆
  • c璇█绋嬪簭涓瓁>>=1鏄粈涔堟剰鎬??
    绛旓細>>=:杩欐槸澶嶅悎杩愮畻绗 鈥>>鈥濇槸鍙岀洰绉讳綅杩愮畻绗︼紝鍏跺姛鑳芥槸鎶娾>> 鈥濆乏杈圭殑杩愮畻鏁扮殑鍚勪簩杩涗綅鍏ㄩ儴鍙崇Щ鑻ュ共浣嶏紝鈥>>鈥濆彸杈圭殑鏁版寚瀹氱Щ鍔ㄧ殑浣嶆暟銆備緥濡傦細璁 a=15(杩欐槸鍗佽繘鍒讹紝瑕佹妸瀹冭浆鎹负2杩涘埗鏁)锛宎>>2琛ㄧず鎶000001111鍙崇Щ涓00000011(鍗佽繘鍒3)銆
  • C璇█涓Щ浣杩愮畻
    绛旓細浠鐨勮鍒鏄細鑻ュ弬鍔犺繍绠楃殑涓や釜浜岃繘鍒朵綅鍊肩浉鍚屽垯涓0锛屽惁鍒欎负1 鍗0鈭0=0锛0鈭1=1锛1鈭0=1锛 1鈭1=0 渚嬶細 00111001鈭 0010101000010011c璇█婧愪唬鐮侊細#include <stdio.h>main(){int a=071;int b = 052;printf("%d",a^b);} 搴旂敤锛氾紙1锛変娇鐗瑰畾浣嶇炕杞鏈夋暟01111010锛2锛夛紝鎯充娇鍏朵綆...
  • C璇█浣嶈繍绠楃:涓庛佹垨銆佸紓鎴栥佸彇鍙嶃佸乏绉诲拰鍙崇Щ!
    绛旓細鍦C璇█鐨涓栫晫閲岋紝浣嶆搷浣滅鐘瑰浜岃繘鍒惰繍绠楃殑鐟炲+鍐涘垁锛屽畠浠寘鎷寜浣嶄笌(&)銆佹寜浣嶆垨(|)銆佹寜浣嶅紓鎴(^)銆佸彇鍙(~)銆佸乏绉(<>)锛屽湪澶勭悊浜岃繘鍒舵暟鎹椂灞曠幇鍑轰簡寮哄ぇ鐨勫▉鍔涖</ 鎸変綅涓(&)锛</ 杩欎釜杩愮畻绗﹀鍚屼竴涓簿瀵嗙殑娓呴浂宸ュ叿锛岄氳繃涓庢搷浣鍙互娓呴浂浣庡瓧鑺傛垨淇濈暀鐗瑰畾浣嶃備緥濡傦紝60涓17鐨勬寜浣嶄笌杩愮畻...
  • c璇█涓涓嬫爣绉讳綅鐨勫師鐞嗘槸浠涔?
    绛旓細褰撴暟缁刟rr[1]涓殑鏁板瓧婊¤冻鏉′欢鏃,灏嗘墽琛绉讳綅璁$畻銆C璇█鏄悜宸︾Щ鍔ㄥ噺灏,鍚戝彸绉诲姩澧炲姞銆 渚嬪: int arr[4]={5,6,7,8} Printf(鈥%d銆%d銆%d銆%d鈥濄乤rr[0]銆乤rr[1]銆乤rr[2]銆乤rr[3]);//杈撳嚭5銆6銆7銆8 arr[0]=25 Printf(鈥%d鈥,a[0]);//杈撳嚭25 鎵╁睍璧勬枡: 鍩烘湰绠楁湳杩愮畻绗 1銆+鍔犳硶鎴...
  • c璇█涓<<鏄粈涔堣繍绠楃
    绛旓細C璇█涓綅绉讳綅杩愮畻绗︽槸灏嗘暟鎹湅鎴愪簩杩涘埗鏁帮紝瀵瑰叾杩涜鍚戝乏鎴栧悜鍙崇Щ鍔ㄨ嫢骞蹭綅鐨勮繍绠椼浣嶇Щ浣嶈繍绠楃鍒嗕负宸︾Щ鍜屽彸绉讳袱绉锛屽潎涓哄弻鐩繍绠楃銆傜涓杩愮畻瀵硅薄鏄Щ浣嶅璞★紝绗簩涓繍绠楀璞℃槸鎵绉荤殑浜岃繘鍒朵綅鏁般備綅绉讳綅杩愮畻绗︾殑杩愮畻瀵硅薄銆佽繍绠楄鍒欎笌缁撴灉銆佺粨鍚堟у琛2-16鎵绀恒傜Щ浣嶆椂锛岀Щ鍑虹殑浣嶆暟鍏ㄩ儴涓㈠純锛岀Щ鍑虹殑...
  • 扩展阅读:扫一扫题目出答案 ... c语言左移位和右移位 ... c语言字母表循环后移n位 ... c语言怎么循环移位 ... c语言移位怎么处理 ... c c++ c# ... c++适合多大的孩子学 ... c语言中怎样声明max ... 移位运算规则 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网