在c++位运算里什么是左移位和右移位 c/c++ 语言 左右移位操作

\u5173\u4e8e c c++\u4e2d\u7684\u79fb\u4f4d\u64cd\u4f5c\uff0c\u662f\u771f\u6b63\u7269\u7406\u5185\u5b58\u4e0a\u7684\u5de6\u79fb\uff0c\u53f3\u79fb\uff0c\u8fd8\u662f\u903b\u8f91\u6570\u5b57\u4e0a\u7684\u79fb\u52a8\uff1f

\u9996\u5148\uff0c\u6570\u636e\u4e0d\u7528\u53d8\u6210\u4e8c\u8fdb\u5236\uff0c\u56e0\u4e3a\u4ed6\u4eec\u5728\u5185\u5b58\u4e2d\u672c\u8eab\u5c31\u662f\u4e8c\u8fdb\u5236\u7684\uff0c\u518d\u6709\u5728\u6307\u4ee4\u96c6\u4e2d\u6709\u4e13\u95e8\u7684\u79fb\u4f4d\u6307\u4ee4\uff0c\u79fb\u4f4d\u6307\u4ee4\u5206\u4e3a\u4e24\u79cd\uff0c\u4e00\u79cd\u662f\u5faa\u73af\u79fb\u4f4d\uff0c\u4e00\u79cd\u662f\u987a\u5e8f\u79fb\u4f4d\uff08\u79fb\u4f4d\u540e\u7a7a\u4f4d\u4f1a\u8865\u96f6\uff09\uff0c\u5bf9\u4e8e32\u4f4d\u673a4\u5b57\u8282\u7684int\u503c\u79fb\u4f4d\u53ea\u8981\u6267\u884c\u79fb\u4f4d\u6307\u4ee4\u90a3\u4e48ALU\uff08\u7b97\u672f\u903b\u8f91\u5355\u5143\uff09\u4f1a\u5c06\u9700\u8981\u79fb\u4f4d\u7684\u7684\u7269\u7406\u5185\u5b58\u4e2d\u7684\u6570\u88c5\u5165\u5bc4\u5b58\u5668A\uff0c\u7136\u540e\u6267\u884c\u79fb\u4f4d\u64cd\u4f5c\uff0c\u518d\u628a\u5bc4\u5b58\u5668A\u7684\u5185\u5bb9\u88c5\u56de\u5230\u76f8\u5e94\u7684\u7269\u7406\u5185\u5b58\u4e2d\u3002\u4f4d\u6570\u8f83\u5c11\u7684\u5904\u7406\u5668\u5c31\u6bd4\u8f83\u9ebb\u70e6\u4e86\uff0c\u56e0\u4e3a\u8981\u6d89\u53ca\u8fdb\u4f4d\u548c\u501f\u4f4d\u64cd\u4f5c\uff0c\u5c31\u4e0d\u662f\u4e00\u6761\u6307\u4ee4\u80fd\u591f\u5b8c\u6210\u7684\u4e86

\u8fd9\u662f\u6211\u5b66\u4e60\u4f4d\u79fb\u65f6\u7684\u7b14\u8bb0\uff0c\u5f88\u6e05\u695a\u3002\u8d1f\u6570\u7684\u4f4d\u79fb\u662f\u8981\u770b\u7f16\u8bd1\u5668\u7684\u3002

7\uff0c\u5de6\u79fb\u8fd0\u7b97\u7b26\uff08<<\uff09\u662f\u53cc\u76ee\u8fd0\u7b97\u7b26\uff0c\u5176\u529f\u80fd\u662f\u628a"<<"\u8fd0\u7b97\u7b26\u5de6\u8fb9\u7684\u8fd0\u7b97\u6570\u7684\u5404\u4e8c\u8fdb\u4f4d\u5168\u90e8\u5de6\u79fb\u82e5\u5e72\u4f4d\uff0c\u79fb\u52a8\u7684\u4f4d\u6570\u7531"<<" \u8fd0\u7b97\u7b26\u53f3\u8fb9\u7684\u6570\u6307\u5b9a\uff0c\u9ad8\u4f4d\u4e22\u5f03\uff0c\u4f4e\u4f4d\u88650\u3002 \u5982\uff1aa<<2 //\u4ee3\u8868a\u7684\u4e8c\u8fdb\u6570\u5411\u5de6\u79fb\u52a82\u4f4d\u3002
//\u5b9e\u9645\u4e0a\u5de6\u79fb\u4e00\u4f4d\u76f8\u5f53\u4e8e\u8be5\u6570\u4e58\u4ee52\uff0c\u79f0\u52a82\u4f4d \u76f8\u5f53\u4e8e\u8be5\u6570\u4e58\u4ee54\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002\u8fd9\u79cd\u60c5\u51b5\u53ea\u9650\u4e8e\u79fb\u52a8\u4f4d\u4e0d\u542b1\u7684\u60c5\u51b5\u3002
8\uff0c\u53f3\u79fb\u8fd0\u7b97\u7b26\uff08>>\uff09\u662f\u53cc\u76ee\u8fd0\u7b97\u7b26\uff0c\u5176\u529f\u80fd\u662f\u628a">>"\u8fd0\u7b97\u7b26\u5de6\u8fb9\u7684\u8fd0\u7b97\u6570\u7684\u5404\u4e8c\u8fdb\u4f4d\u5168\u90e8\u53f3\u79fb\u82e5\u5e72\u4f4d\uff0c\u79fb\u52a8\u7684\u4f4d\u6570\u6309">>" \u8fd0\u7b97\u7b26\u53f3\u8fb9\u7684\u6570\u6307\u5b9a\u3002
//\u5728\u8fdb\u884c\u53f3\u79fb\u65f6\u5bf9\u4e8e\u6709\u7b26\u53f7\u7684\u6570\u9700\u8981\u6ce8\u610f\u7b26\u53f7\u95ee\u9898\uff0c\u5f53\u4e3a\u6b63\u6570\u65f6\uff0c\u6700\u9ad8\u4f4d\u88650\uff0c\u800c\u4e3a\u8d1f\u6570\u65f6\uff0c\u6700\u9ad8\u4f4d\u88650\u62161\u53d6\u51b3\u4e8e\u7f16\u8bd1 \u7cfb\u7edf\u7684\u89c4\u5b9a\uff0c\u79fb\u51650\u7684\u79f0\u4e3a"\u903b\u8f91\u53f3\u79fb"\uff0c\u79fb\u51651\u7684\u79f0\u4e3a"\u7b97\u672f\u53f3\u79fb"\u3002\uff08visualC++\uff09\u662f\u4ee5\u7b97\u672f\u53f3\u79fb\u3002
\u5faa\u73af\u79fb\u4f4d
1\uff0c\u5faa\u73af\u79fb\u4f4d\u5c31\u662f\u5c06\u79fb\u51fa\u7684\u4f4e\u4f4d\u653e\u5230\u8be5\u6570\u7684\u9ad8\u4f4d\u6216\u8005\u79fb\u51fa\u9ad8\u4f4d\u653e\u5230\u8be5\u6570\u7684\u4f4e\u4f4d\u3002
\u5982\uff1aa.00110000,00000000,11010000,00001011 \u5de6\u5faa\u73af\u79fb\u52a84\u4f4d
z.10110000,00000000,00000000,00000000 \u5148\u5de6\u79fb32-4=28\u4f4d\u540e\u7684\u7ed3\u679c\u3002 \u516c\u5f0f\u4e3a\uff1az=a<<(32-n) //\u6b64\u65f6n=4
y.00001100.00000000,00001101.00000000 \u518d\u53f3\u79fb4\u4f4d\u7684\u7ed3\u679c\u3002 y=a>>n
a.10111100.00000000,00001101.00000000 \u8fd9\u5c31\u662f\u5faa\u73af\u5de6\u79fb4\u4f4d\u7684\u7ed3\u679c\u3002 a=z|y
2,\u53f3\u5faa\u73af\u79fb\u52a8\u7684\u65b9\u6cd5\u7c7b\u4f3c\uff0c\u53ea\u9700\u8981\u8f6c\u6362\u5373\u53ef\u3002

左移位就是比如二进制 0000 1011 左移一位就是 0001 0110,相当于乘2
右移位类似, 0000 1011 右移一位就是 0000 0101,相当于除2

这个左右移位是怎么算的?
这个很好算嘛!
你先用十进制数试试看,不就是“乘以十、除以十”吗?
计算机用二进制,那么:
  左移一位,就是乘以 2;
  右移一位,就是除以 2。

移位操作在程序设计中,位操作运算符的一种。
1.在c++中,移位运算符有双目移位运算符:<<(左移)和>>(右移)。移位运算符组成的表达式也属于算术表达式,其值为算术值。
2.左移运算是将一个二进制位的操作数按指定移动的位数向左移位,移出位被丢弃,右边的空位一律补0。3.右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定。在使用补码作为机器数的机器中,正数的符号位为0,负数的符号位为1。

  • c璇█鍙绉诲拰宸︾Щ鏄庢牱杞崲鐨?
    绛旓細鍙崇Щ涓浣嶇浉褰撲簬闄や互2銆備緥锛5>>1 5鐨勪簩杩涘埗琛ㄧず鏄101锛岄偅涔堝彸绉讳竴浣嶄箣鍚庢槸10灏辨槸2浜嗭紝鏄暣闄ょ殑锛宸︾Щ鐨勮瘽灏辨槸鍦ㄥ悗闈㈣ˉ涓涓浂锛岀浉褰撲簬鏄箻浠ヤ簩锛岄偅涔堝彉鎴愪簡1010锛屽崄杩涘埗鏄10銆101鍙崇Щ锛屽氨鏄妸鏈鍚庝竴浣嶆嬁鎺変簡锛屾槸10杩欎釜鏄簩杩涘埗鐨勶紝鍗佽繘鏄2锛5/2鏈潵鏄皬鏁帮紝浣嗚繖閲屾槸鏁存暟鎿嶄綔鐨勶紝鎵浠ユ妸灏忔暟...
  • c璇█涓浣嶈繍绠鐨勫乏浣嶇Щ鍙充綅绉婚兘鏄粈涔鎰忔
    绛旓細鍋囪0010宸︾Щ灏辨槸鎶婁簩杩涘埗鏁板悜宸︾Щ鍔锛屽彸杈硅ˉ0锛0鐨勪簩杩涘埗鍏ㄦ槸0锛屽乏绉讳箣鍚庡彸杈瑰啀琛0銆0010<<2 灏辨槸1000 瀹為檯鏄仛鐨*4銆1000>>2 璁$畻 0010 瀹為檯鍋氱殑鏄/4銆備綅绉讳綅杩愮畻绗︽槸灏嗘暟鎹湅鎴愪簩杩涘埗鏁帮紝瀵瑰叾杩涜鍚戝乏鎴栧悜鍙崇Щ鍔ㄨ嫢骞蹭綅鐨勮繍绠椼備綅绉讳綅杩愮畻绗﹀垎涓宸︾Щ鍜鍙崇Щ涓ょ锛屽潎涓哄弻鐩繍绠楃銆傜涓杩...
  • c璇█涓殑宸﹁皟鏁村拰鍙宠皟鏁鏄粈涔鎰忔?
    绛旓細涓嬮潰鏄乏绉诲拰鍙崇Щ銆傚厛璇村乏绉,宸︾Щ灏辨槸鎶婁竴涓暟鐨勬墍鏈変綅閮藉悜宸︾Щ鍔ㄨ嫢骞蹭綅,鍦–涓敤<<杩愮畻绗.渚嬪:int i = 1;i = i << 2; //鎶奿閲岀殑鍊煎乏绉2浣 涔熷氨鏄,1鐨2杩涘埗鏄000...0001(杩欓噷1鍓嶉潰0鐨勪釜鏁板拰int鐨勪綅鏁版湁鍏,32浣嶆満鍣,gcc閲屾湁31涓0),宸︾Щ2浣嶄箣鍚庡彉鎴 000...0100,涔熷氨...
  • 鍦╟++浣嶈繍绠楅噷浠涔堟槸宸︾Щ浣嶅拰鍙崇Щ浣
    绛旓細绉讳綅鎿嶄綔鍦ㄧ▼搴忚璁′腑锛屼綅鎿嶄綔杩愮畻绗︾殑涓绉銆1.鍦╟++涓紝绉讳綅杩愮畻绗︽湁鍙岀洰绉讳綅杩愮畻绗︼細<<锛堝乏绉伙級鍜岋紙鍙崇Щ锛夈傜Щ浣嶈繍绠楃缁勬垚鐨勮〃杈惧紡涔熷睘浜庣畻鏈〃杈惧紡锛屽叾鍊间负绠楁湳鍊笺2.宸︾Щ杩愮畻鏄皢涓涓簩杩涘埗浣嶇殑鎿嶄綔鏁版寜鎸囧畾绉诲姩鐨勪綅鏁板悜宸︾Щ浣嶏紝绉诲嚭浣嶈涓㈠純锛屽彸杈圭殑绌轰綅涓寰嬭ˉ0銆3.鍙崇Щ杩愮畻鏄皢涓涓簩杩涘埗...
  • C璇█浣嶈繍绠绗:涓庛佹垨銆佸紓鎴栥佸彇鍙嶃宸︾Щ鍜鍙崇Щ!
    绛旓細宸︾Щ(<<)鏄綅绉荤殑宸︽楠わ紝灏嗘暟鍚戝乏绉诲姩鎸囧畾鐨勪綅鏁帮紝楂樹綅婧㈠嚭鍚庤0濉厖锛屾瘮濡俰nt a=15锛宎<<2鐨勮绠楃粨鏋滃氨鏄60锛屽睍绀轰簡浣嶇Щ鐨勬墿灞曡兘鍔涖傚彸绉(>>锛屾湁鏃犵鍙峰拰鏈夌鍙蜂袱绉嶏級鍒欐洿涓哄鏉傘傛棤绗﹀彿鏁伴珮浣嶈ˉ0锛岃屾湁绗﹀彿鏁板彲鑳界敤绗﹀彿浣嶆垨0濉ˉ锛屽洜姝ゅ湪澶勭悊璐熸暟鏃堕渶鐗瑰埆娉ㄦ剰銆備緥濡傦紝int a=64锛宎>>1浼...
  • C璇█浣嶈繍绠绗:涓庛佹垨銆佸紓鎴栥佸彇鍙嶃宸︾Щ鍜鍙崇Щ!
    绛旓細鍦–璇█鐨勪笘鐣岄噷锛浣嶆搷浣绗︾姽濡備簩杩涘埗杩愮畻鐨勭憺澹啗鍒锛屽畠浠寘鎷寜浣嶄笌(&)銆佹寜浣嶆垨(|)銆佹寜浣嶅紓鎴(^)銆佸彇鍙(~)銆宸︾Щ(<>)锛屽湪澶勭悊浜岃繘鍒舵暟鎹椂灞曠幇鍑轰簡寮哄ぇ鐨勫▉鍔涖</ 鎸変綅涓(&)锛</ 杩欎釜杩愮畻绗﹀鍚屼竴涓簿瀵嗙殑娓呴浂宸ュ叿锛岄氳繃涓庢搷浣滃彲浠ユ竻闆朵綆瀛楄妭鎴栦繚鐣欑壒瀹氫綅銆備緥濡傦紝60涓17鐨勬寜浣嶄笌杩愮畻...
  • C璇█涓殑浣嶈繍绠绗︽湁鍝簺?
    绛旓細C 璇█涓湁浠ヤ笅浣嶈繍绠绗︼細&锛堟寜浣嶄笌锛夛細灏嗕袱涓暟鐨勪簩杩涘埗姣忎竴浣嶅悓鏃朵笌锛圓ND锛夎捣鏉ワ紝骞跺皢缁撴灉璧嬬粰宸︽搷浣滄暟銆倈锛堟寜浣嶆垨锛夛細灏嗕袱涓暟鐨勪簩杩涘埗姣忎竴浣嶅悓鏃舵垨锛圤R锛夎捣鏉ワ紝骞跺皢缁撴灉璧嬬粰宸︽搷浣滄暟銆俕锛堟寜浣嶅紓鎴栵級锛氬皢涓や釜鏁扮殑浜岃繘鍒舵瘡涓浣嶅悓鏃跺紓鎴栵紙XOR锛夎捣鏉ワ紝骞跺皢缁撴灉璧嬬粰宸︽搷浣滄暟銆<<锛宸︾Щ锛...
  • 浣嶈繍绠绗C璇█鐨勫叚绉嶄綅杩愮畻绗
    绛旓細浣嶈繍绠绗︽槸C璇█涓殑寮哄ぇ宸ュ叿锛屽寘鎷寜浣嶄笌(&)銆佹寜浣嶆垨(|)銆佹寜浣嶅紓鎴(^)銆佸彇鍙(锝)銆宸︾Щ(<>)銆傛寜浣嶄笌(&)鐢ㄤ簬娓呴浂鎴栦繚鐣欑壒瀹氫綅锛屽灏哸鐨勯珮鍏綅璁句负0锛屼綆鍏綅淇濈暀锛屼娇鐢╝&255銆傜ず渚嬩唬鐮佷腑锛岄氳繃a&b璁$畻寰楀埌c銆傛寜浣嶆垨(|)鏄綋鑷冲皯涓涓搴斾綅涓1鏃讹紝缁撴灉浣嶄负1锛屽9|5绛変簬13锛岀敤浜庡悎骞...
  • C璇█浣嶈繍绠
    绛旓細涓銆浣嶈繍绠绗C璇█鎻愪緵浜嗗叚绉嶄綅杩愮畻绗︼細& 鎸浣嶄笌 | 鎸変綅鎴 ^ 鎸変綅寮傛垨 ~ 鍙栧弽 << 宸︾Щ >> 鍙崇Щ 1. 鎸変綅涓庤繍绠 鎸変綅涓庤繍绠楃"&"鏄弻鐩繍绠楃銆傚叾鍔熻兘鏄弬涓庤繍绠楃殑涓ゆ暟鍚勫搴旂殑浜岃繘浣嶇浉涓庛傚彧鏈夊搴旂殑涓や釜浜岃繘浣嶅潎涓1鏃讹紝缁撴灉浣嶆墠涓1 锛屽惁鍒欎负0銆傚弬涓庤繍绠楃殑鏁颁互琛ョ爜鏂瑰紡鍑虹幇銆備緥濡傦細9...
  • C璇█涓绉讳綅杩愮畻
    绛旓細宸︾Щ杩愮畻绗︽槸鐢ㄦ潵灏嗕竴涓暟鐨勫悇浜岃繘鍒朵綅宸︾Щ鑻ュ共浣嶏紝绉诲姩鐨勪綅鏁扮敱鍙虫搷浣滄暟鎸囧畾锛堝彸鎿嶄綔鏁板繀椤绘槸闈炶礋鍊硷級锛屽叾鍙宠竟绌哄嚭鐨勪綅鐢0濉ˉ锛岄珮浣嶅乏绉绘孩鍑哄垯鑸嶅純璇ラ珮浣嶃備緥濡傦細灏哸鐨勪簩杩涘埗鏁板乏绉2浣嶏紝鍙宠竟绌哄嚭鐨勪綅琛0锛屽乏杈规孩鍑虹殑浣嶈垗寮冦傝嫢a=15,鍗00001111锛2锛夛紝宸︾Щ2浣嶅緱00111100锛2锛夈傛簮浠g爜锛#...
  • 扩展阅读:移位运算器 ... c++运算 ... c++数学题 ... c++计算运算符 ... c++输入运算符 ... c语言左右移位 ... c++位运算符 ... c++或运算符 ... 骨折侧方移位图解 ...

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