C程序中,左移“<<”、右移“>>” 的具体用法是什么? C语言中的左移<<和右移>>怎样运算的

C\u7a0b\u5e8f\u4e2d,\u5de6\u79fb"<<"\u3001\u53f3\u79fb">>" \u7684\u5177\u4f53\u7528\u6cd5\u662f\u4ec0\u4e48

\u9996\u5148\u8981\u77e5\u9053\u662f\u4e8c\u8fdb\u5236\u6309\u4f4d\u79fb\u52a8\uff0c\u4e14\u75280\u8865\u4f4d\u3002\u6bd4\u5982a=5<<1\uff0c\u5c31\u662fa\u7b49\u4e8e5\u5de6\u79fb1\u4f4d\uff0c\u5177\u4f53\u5c31\u662f\u5148\u628a5\u6362\u7b97\u6210\u4e8c\u8fdb\u52360101\uff0c\u7136\u540e\u6240\u6709\u4f4d\u5de6\u79fb\u4e00\u4f4d\uff0c\u53f3\u8fb9\u75280\u8865\u4f4d\uff0c\u5c31\u53d8\u6210\u4e861010.

\u79fb\u4f4d\u64cd\u4f5c\u7b26\u7684\u4e24\u4e2a\u64cd\u4f5c\u6570\u5fc5\u987b\u662f\u6574\u578b\u7684\u3002\u6574\u4e2a\u79fb\u4f4d\u8868\u8fbe\u5f0f\u7684\u503c\u7684\u7c7b\u578b\u4e5f\u662f\u6574\u578b\u7684\uff0c\u800c\u4e14\uff0c\u5de6\u79fb\u4f4d\u64cd\u4f5c\u7b26\u4e0e\u53f3\u79fb\u4f4d\u64cd\u4f5c\u7b26\u7684\u8fd0\u7b97\u5e76\u4e0d\u5bf9\u79f0\u3002

C语言中,“<<”为左移运算符,“>>”为右移运算符。

具体使用方法如下:

1、左移运算符(<<)

将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。

例:a = a << 2 将a的二进制位左移2位,右补0,

左移1位后a = a * 2;

若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。


2、右移运算符(>>)

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

操作数每右移一位,相当于该数除以2。

例如:a = a >> 2 将a的二进制位右移2位。

左补0 or 补1 得看被移数是正还是负。



这是两个位操作运算,是对参数二进制方式的位移,移动后,空出的位用0补上。例如:
0111 0101 b << 2 :对这个数左移二位后:1101 0100 b;
再如:
5 << 3 :先转换成二进制:0000 0101 b << 3 = 0010 1000 b = 0x28

  • C璇█闂,鍦ㄤ綅杩愮畻涓,鎿嶄綔鏁版瘡鍙崇Щ涓浣,鍏剁粨鏋滅浉褰撲簬浠涔?鑻宸︾Щ1浣...
    绛旓細鍙崇Щ瀵圭鍙蜂綅鐨勫鐞嗗拰宸︾Щ涓嶅悓锛屽浜庢湁绗﹀彿鏁存暟鏉ヨ锛屾瘮濡俰nt绫诲瀷锛屽彸绉讳細淇濇寔绗﹀彿浣嶄笉鍙橈紝渚嬪锛歩nti=0x80000000锛沬=i>>1锛//i鐨勫间笉浼氬彉鎴0x40000000锛岃屼細鍙樻垚0xc0000000 2銆佸乏绉伙紝涔樹互2宸︾Щn浣嶄箻浠2鐨刵娆℃柟锛涘厛璇村乏绉锛屽乏绉灏辨槸鎶婁竴涓暟鐨勬墍鏈変綅閮藉悜宸︾Щ鍔ㄨ嫢骞蹭綅锛屽湪C涓鐢<<杩愮畻绗︺
  • C璇█涓鐨宸︾Щ鍜屽彸绉?
    绛旓細0111鍙绉涓浣嶆槸鎶婃渶鍚庝竴浣嶇殑1鍘绘帀锛屽乏杈琛ヤ釜0锛屽緱0011锛岃浆鎹负鍗佽繘鍒舵槸3锛岃繖鏄纭殑銆傚苟涓嶇瓑鍚屼簬闄や互2
  • C璇█鎸変綅宸︾Щ杩愮畻瑙勫垯
    绛旓細C璇█涓鎸変綅宸︾Щ鐨勮繍绠楃涓<<锛屽叾瑙勫垯濡備笅锛氬浜庢搷浣渁<<n锛1 鎸夌収浜岃繘鍒跺兼瘡浣嶅悜楂樹綅(涔﹀啓涓婃槸鍚戝乏)绉诲姩n浣嶏紱2 鏈楂樹綅(鏈宸﹁竟鐨)n浣嶈垗鍘伙紱3 鏈浣庝綅(鏈鍙宠竟)濉姞n涓0.绠鍗曡捣瑙侊紝鐢╟har鍨嬩妇渚嬪涓嬶細渚嬩竴 0x12 << 3 => B00010010 << 3 => B10010 000(杩欓噷鏈楂樹綅鐨勪笁涓0琚垗鍘伙紝...
  • c璇█宸︾Щ闂
    绛旓細渚嬪锛0001 0010锛堝崄杩涘埗涓18锛宸︾Щ4浣嶏紝寰楀埌鐨勫簲璇ユ槸0010 0000锛堝崄杩涘埗32锛夛紝浣嗘槸18*16鈮32銆锛堟ā256锛夊綋宸︾Щ宸﹁竟涓嶅幓闆讹紝鍙宠竟鍗曠函琛ラ浂鐨勬椂鍊欏緱鍒0001 0010 0000锛岃繖鏃跺欏緱鍒扮殑鎭板ソ鏄 288=18*16锛屼絾杩欏彧鏄崟绾線宸︾Щ浜嗭紙鈥滀涪澶扁濅簡绉诲嚭鐨4浣嶏級濡傛灉浠嶆槸瀛樺偍鍦╱nsigned char 涓殑璇濓紝灏变粛鏄0010...
  • C璇█濡備綍鑾峰彇宸︾Щ鍜屽彸绉诲悗,绉诲嚭鐨勬暟鎹嚭鐨勬暟鎹?
    绛旓細浠宸︾Щ涓轰緥锛歩f ((x &1000 0000) == 0)绉诲嚭0;else 绉诲嚭1;鎿嶄綔 x<<1;
  • C璇█ 宸︾Щ浣嶇殑闂,姹傚ぇ绁,甯繖瑙i噴涓涓!!!
    绛旓細鍥犱负姹囩紪閲岄潰鍙湁涓ょ绉讳綅锛氫笉甯Y鐨勫惊鐜Щ浣 鍜屽甫CY鐨勫惊鐜Щ浣嶃侰Y鏄繘浣嶆爣蹇椾綅 涓嶅甫CY鐨勫惊鐜Щ浣嶆槸鍋囪宸︾Щ鐨勮瘽锛屾槸鎶婃渶宸︿綅鏀惧埌鏈鍙充綅浜嗐傚甫CY鐨勬妸鏈宸︿綅鏀捐繘CY锛孋Y鐨勫師鍊兼斁鏈鍙充綅銆C璇█鐨勫乏绉昏繍绠楀彲浠ョ悊瑙d负鍏堝皢CY缃0锛岀劧鍚庢墽琛屽甫CY鐨勫惊鐜Щ浣嶆搷浣溿傜Щ浣嶅悗CY鐨勫兼槸鍘熸潵鐨勬渶宸︿綅锛孋Y閲鐨0...
  • 鍏充簬C璇█鐨宸︾Щ(<<)鍜屽彸绉(>>)
    绛旓細宸︾Щ姣旇緝绠鍗曪紝鍙宠竟琛0锛堢Щ鍑犱綅灏辫ˉ鍑犱釜0锛锛屽乏杈涓㈡帀銆傚彸绉绘瘮杈冨鏉傦紝鍙崇Щ鍒嗕袱绉嶏細锛1锛夐昏緫鍙崇Щ锛屽乏杈硅ˉ0锛堢Щ鍑犱綅琛ュ嚑浣嶏級锛屽彸杈圭Щ鍑哄幓鐨勪涪鎺夈傦紙2锛夌畻鏈彸绉伙紝宸﹁竟琛ユ渶楂樹綅锛堝嵆鍘熸潵鐨勬渶楂樹綅鏄0灏辫ˉ0锛屾槸1灏辫ˉ1锛屽洜涓烘渶楂樹綅浠h〃绗﹀彿锛岃繖鏍峰彲浠ヤ繚璇佽礋鏁颁笉浼氬彉鎴愭鏁帮級锛屽彸杈逛涪鎺夈
  • c璇█鏁扮粍宸︾Щ?
    绛旓細渚嬪锛宎[2]=3锛岀敤浜岃繘鍒惰〃绀烘槸鈥11鈥滐紝閭d箞瀹宸︾Щ8浣嶅緱鍒颁簩杩涘埗鈥11 0000 0000鈥滐紝鍐嶅拰0x00ff鍗斥1111 1111鈥滃仛閫昏緫鎴栨搷浣滐紝寰楀埌浜岃繘鍒垛11 1111 1111鈥滀篃灏辨槸鍗佽繘鍒剁殑1023锛屽嵆c[2]=1023銆俢[0] = (1<<8)|0x00ff = 浜岃繘鍒剁殑"1 0000 0000"鍜屸1111 1111鈥滆繘琛岄昏緫鎴 = 浜岃繘鍒剁殑鈥...
  • c璇█涓浣嶈繍绠楃殑宸︿綅绉诲彸浣嶇Щ閮芥槸浠涔堟剰鎬
    绛旓細鍋囪0010宸︾Щ灏辨槸鎶婁簩杩涘埗鏁板悜宸︾Щ鍔紝鍙宠竟琛0锛0鐨勪簩杩涘埗鍏ㄦ槸0锛屽乏绉涔嬪悗鍙宠竟鍐嶈ˉ0銆0010<<2 灏辨槸1000 瀹為檯鏄仛鐨*4銆1000>>2 璁$畻 0010 瀹為檯鍋氱殑鏄/4銆備綅绉讳綅杩愮畻绗︽槸灏嗘暟鎹湅鎴愪簩杩涘埗鏁帮紝瀵瑰叾杩涜鍚戝乏鎴栧悜鍙崇Щ鍔ㄨ嫢骞蹭綅鐨勮繍绠椼備綅绉讳綅杩愮畻绗﹀垎涓哄乏绉诲拰鍙崇Щ涓ょ锛屽潎涓哄弻鐩繍绠楃銆傜涓...
  • C璇█鏁扮粍鐨宸︾Щ鍑芥暟
    绛旓細for(int i = 0; i < length - 2; i++) { a[i] = a[i+2]; }*length = (*length) - 2; } //濡傛灉鍙槸杈撳嚭宸︾Щ涓や綅鐨勭粨鏋滐紝鍙互鐢ㄤ笅闈㈣繖涓嚱鏁皏oid fun(char *a, int length){ for(int i =2; i < length; i++) { printf("%c",a[i]); }} ...
  • 扩展阅读:cnc宏程序代码大全 ... &lt 是什么意思 ... lt男女之间什么意思 ... &lt &gt 哪个大哪个小 ... &lt医学是什么意思 ... 宏程序代码一览表 ... &lt &gt 是什么符号 ... 宏程序编程口诀 ... &lt 是大于号还是小于号 ...

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