C语言中的左移和右移? 关于C语言的左移(<<)和右移(>>)

C\u8bed\u8a00 \u5de6\u79fb \u53f3\u79fb\u7684\u95ee\u9898 << \u6216 >>

\u5de6\u79fb \u53f3\u79fb\u4e0d\u4f1a\u4fee\u6539a\u672c\u8eab

a=ox32 (16\u8fdb\u5236) 0011 0010
b=a<<2
\u8fd9\u4e2a\u65f6\u5019b=1100 1000 \u5bf9
\u90a3\u4e48\u6b64\u65f6a=0011 0010


\u7ee7\u7eed
c=a<<2
\u8bf7\u95eec\u662f\u5728\u539f\u6765a\u7684\u521d\u503c\uff08ox32\uff09\u4e0a\u79fb\u52a8
\u8fd9\u4e2a\u65f6\u5019c=1100 1000

\u5de6\u79fb\u6bd4\u8f83\u7b80\u5355\uff0c\u53f3\u8fb9\u88650\uff08\u79fb\u51e0\u4f4d\u5c31\u8865\u51e0\u4e2a0\uff09\uff0c\u5de6\u8fb9\u4e22\u6389\u3002
\u53f3\u79fb\u6bd4\u8f83\u590d\u6742\uff0c\u53f3\u79fb\u5206\u4e24\u79cd\uff1a
\uff081\uff09\u903b\u8f91\u53f3\u79fb\uff0c\u5de6\u8fb9\u88650\uff08\u79fb\u51e0\u4f4d\u8865\u51e0\u4f4d\uff09\uff0c\u53f3\u8fb9\u79fb\u51fa\u53bb\u7684\u4e22\u6389\u3002
\uff082\uff09\u7b97\u672f\u53f3\u79fb\uff0c\u5de6\u8fb9\u8865\u6700\u9ad8\u4f4d\uff08\u5373\u539f\u6765\u7684\u6700\u9ad8\u4f4d\u662f0\u5c31\u88650\uff0c\u662f1\u5c31\u88651\uff0c\u56e0\u4e3a\u6700\u9ad8\u4f4d\u4ee3\u8868\u7b26\u53f7\uff0c\u8fd9\u6837\u53ef\u4ee5\u4fdd\u8bc1\u8d1f\u6570\u4e0d\u4f1a\u53d8\u6210\u6b63\u6570\uff09\uff0c\u53f3\u8fb9\u4e22\u6389\u3002

0111右移一位是把最后一位的1去掉,左边补个0,得0011,转换为十进制是3,这是正确的。并不等同于除以2

移位操作符的两个操作数必须是整型的。整个移位表达式的值的类型也是整型的,而且,左移位操作符与右移位操作符的运算并不对称。

左移就是把二进制数向左移动,右边补0,0的二进制全是0,左移之后右边再补0,移5和移6没区别
<<后面的数字表示移多少位

移位只是对int型进行的操作。如果按是int型的计算,结果是正确的 。

你优先级没注意,<<的优先级比
^
的高,所以应该先算b<<2
,为00011000;
再算与a异或运算就可以了!

  • c璇█鍙崇Щ鍜屽乏绉鏄庢牱杞崲鐨?
    绛旓細鍙崇Щ涓浣嶇浉褰撲簬闄や互2銆備緥锛5>>1 5鐨勪簩杩涘埗琛ㄧず鏄101锛岄偅涔堝彸绉讳竴浣嶄箣鍚庢槸10灏辨槸2浜嗭紝鏄暣闄ょ殑锛涘乏绉荤殑璇濆氨鏄湪鍚庨潰琛ヤ竴涓浂锛岀浉褰撲簬鏄箻浠ヤ簩锛岄偅涔堝彉鎴愪簡1010锛屽崄杩涘埗鏄10銆101鍙崇Щ锛屽氨鏄妸鏈鍚庝竴浣嶆嬁鎺変簡锛屾槸10杩欎釜鏄簩杩涘埗鐨勶紝鍗佽繘鏄2锛5/2鏈潵鏄皬鏁帮紝浣嗚繖閲屾槸鏁存暟鎿嶄綔鐨勶紝鎵浠ユ妸灏忔暟...
  • c璇█涓殑>>鍜<<鍒嗗埆鏄粈涔堟剰鎬濆晩?
    绛旓細C璇█涓殑>>鍜<<鍒嗗埆鏄乏绉昏繍绠楃鍜屽彸绉昏繍绠楃锛岀敤浜庢暣鏁板湪浜岃繘鍒跺舰寮忕殑绉讳綅杩愮畻銆1銆佸乏绉昏繍绠楃锛<<锛夎鍒欙細鎸変簩杩涘埗褰㈠紡鎶婃墍鏈夌殑鏁板瓧鍚戝乏绉诲姩瀵瑰簲鐨勪綅鏁帮紝楂樹綅绉诲嚭(鑸嶅純)锛屼綆浣嶇殑绌轰綅琛ラ浂銆傝娉曟牸寮忥細闇瑕佺Щ浣嶇殑鏁板瓧 << 绉讳綅鐨勬鏁帮紝渚嬪锛 3 << 2锛屽垯鏄皢鏁板瓧3宸︾Щ2浣嶃傛暟瀛︽剰涔夛細鍦ㄦ暟瀛...
  • c璇█涓殑宸璋冩暣鍜屽彸璋冩暣鏄粈涔堟剰鎬?
    绛旓細鎬讳箣,鍦–涓,宸︾Щ鏄昏緫/绠楁湳宸︾Щ(涓よ呭畬鍏ㄧ浉鍚),鍙崇Щ鏄畻鏈彸绉,浼氫繚鎸佺鍙蜂綅涓嶅彉.瀹為檯搴旂敤涓彲浠ユ牴鎹儏鍐电敤宸/鍙崇Щ鍋氬揩閫熺殑涔/闄よ繍绠,杩欐牱浼氭瘮寰幆鏁堢巼楂樺緢澶.
  • C璇█闂,鍦ㄤ綅杩愮畻涓,鎿嶄綔鏁版瘡鍙崇Щ涓浣,鍏剁粨鏋滅浉褰撲簬浠涔?鑻宸︾Щ1浣...
    绛旓細宸︾Щ灏辨槸锛氫涪寮冩渶楂樹綅锛0琛ユ渶浣庝綅
  • c璇█涓,鎸変綅涓庛佹寜浣嶆垨銆宸︾Щ銆鍙崇Щ鏈夊尯鍒箞?
    绛旓細1銆侊綖锛氭剰鎬濇槸鎸変綅鍙栧弽锛岀被浼间簬闈烇紙锛侊級鐨勫叧绯伙紝鍙栧畠鐨勫弽闈2銆<<: 鎰忔濇槸宸︾Щ锛岀Щ鍔ㄤ簩杩涘埗鐨勪綅銆3銆& : 鎰忔濇槸鎸変綅涓庯紝绫讳技浜庝笌(&&)鐨勫叧绯伙紝涓鍋囦负鍋囥4銆侊季锛氭剰鎬濇槸鎸変綅寮傛垨锛岄氫織鍦拌灏辨槸鐩稿悓涓0锛屼笉鍚屼负1锛5銆侊綔锛氭剰鎬濇槸鎸変綅鎴栵紝绫讳技浜庢垨锛堬綔锝滐級鐨勫叧绯伙紝涓鐪熶负鐪熴
  • C璇█浣嶈繍绠楃:涓庛佹垨銆佸紓鎴栥佸彇鍙嶃宸︾Щ鍜屽彸绉!
    绛旓細宸︾Щ(<<)锛</ 閫氳繃宸︾Щ浣嶆搷浣滐紝鎴戜滑鍙互灏嗘暟鍊肩殑浣嶅悜宸︾Щ鍔鎸囧畾鐨勪綅鏁帮紝濡15宸︾Щ涓や綅鍙樹负00111100锛岃繖鍦ㄦ暟鎹帇缂╁拰鍊嶅鎿嶄綔涓潪甯稿父瑙併鍙崇Щ(>>)锛</ 鏃犵鍙锋暟鍙崇Щ鏃讹紝楂樹綅鑷姩琛0锛涜屽浜庢湁绗﹀彿鏁帮紝鍙崇Щ鍙兘浼氬奖鍝嶅埌绗﹀彿浣嶏紙绠楁湳鎴栭昏緫绉讳綅锛夈備緥濡傦紝鏃犵鍙锋暟鍙崇Щ浼氬鑷存孩鍑轰负0锛岃繖鏄悊瑙f暟鎹...
  • C璇█浣嶈繍绠楃:涓庛佹垨銆佸紓鎴栥佸彇鍙嶃宸︾Щ鍜屽彸绉!
    绛旓細宸︾Щ(<<)鏄綅绉鐨勫乏姝ラ锛屽皢鏁板悜宸︾Щ鍔鎸囧畾鐨勪綅鏁帮紝楂樹綅婧㈠嚭鍚庤0濉厖锛屾瘮濡俰nt a=15锛宎<<2鐨勮绠楃粨鏋滃氨鏄60锛屽睍绀轰簡浣嶇Щ鐨勬墿灞曡兘鍔涖鍙崇Щ(>>锛屾湁鏃犵鍙峰拰鏈夌鍙蜂袱绉嶏級鍒欐洿涓哄鏉傘傛棤绗﹀彿鏁伴珮浣嶈ˉ0锛岃屾湁绗﹀彿鏁板彲鑳界敤绗﹀彿浣嶆垨0濉ˉ锛屽洜姝ゅ湪澶勭悊璐熸暟鏃堕渶鐗瑰埆娉ㄦ剰銆備緥濡傦紝int a=64锛宎>>1浼...
  • C璇█涓殑宸︾Щ鍜屽彸绉?
    绛旓細0111鍙崇Щ涓浣嶆槸鎶婃渶鍚庝竴浣嶇殑1鍘绘帀锛屽乏杈硅ˉ涓0锛屽緱0011锛岃浆鎹负鍗佽繘鍒舵槸3锛岃繖鏄纭殑銆傚苟涓嶇瓑鍚屼簬闄や互2
  • c璇█涓浣嶈繍绠鐨勫乏浣绉诲彸浣嶇Щ閮芥槸浠涔堟剰鎬
    绛旓細鍋囪0010宸︾Щ灏辨槸鎶婁簩杩涘埗鏁板悜宸︾Щ鍔紝鍙宠竟琛0锛0鐨勪簩杩涘埗鍏ㄦ槸0锛屽乏绉讳箣鍚庡彸杈瑰啀琛0銆0010<<2 灏辨槸1000 瀹為檯鏄仛鐨*4銆1000>>2 璁$畻 0010 瀹為檯鍋氱殑鏄/4銆備綅绉讳綅杩愮畻绗︽槸灏嗘暟鎹湅鎴愪簩杩涘埗鏁帮紝瀵瑰叾杩涜鍚戝乏鎴栧悜鍙崇Щ鍔ㄨ嫢骞蹭綅鐨勮繍绠椼備綅绉讳綅杩愮畻绗﹀垎涓宸︾Щ鍜屽彸绉涓ょ锛屽潎涓哄弻鐩繍绠楃銆傜涓...
  • c璇█宸︾Щ銆鍙崇Щ鐨勮鍒欐槸浠涔?
    绛旓細SHR锛堢畻鏁鍙崇Щ锛夛細shift logical right SAL锛堥昏緫宸︾Щ锛夛細shift arithmetic left SAR锛堥昏緫鍙崇Щ锛夛細shift arithmetic right ROL锛堝惊鐜乏绉伙級锛歳otate left ROR锛堝惊鐜彸绉伙級锛歳otate right RCL锛堝甫杩涗綅鐨勫惊鐜乏绉伙級锛歳otate left through carry RCR锛堝甫杩涗綅鐨勫惊鐜彸绉伙級锛歳otate right through carry ...
  • 扩展阅读:怎么把整行文字左移 ... c语言左移和右移指令 ... c语言左移右移补0还是1 ... crol是左移还是右移 ... c语言左移位和右移位 ... c语言中左右移怎么算 ... c语言右移运算 ... c语言左移右移举例 ... c语言左移运算符怎么用 ...

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