c语言中右移一位等于左移多少?
右移一位相当于除以2。
例:5>>1
5的二进制表示是101,那么右移一位之后是10就是2了,是整除的;左移的话就是在后面补一个零,相当于是乘以二,那么变成了1010,十进制是10。
101右移,就是把最后一位拿掉了,是10这个是二进制的,十进是2,5/2本来是小数,但这里是整数操作的,所以把小数部分去掉了。
扩展资料
C语言中的左移
1、左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如:
inti=1;
i=i<<2;//把i里的值左移2位。
2、补符号位,就是一个signedchara=0xff;
a=a>>1;/*它仍是0xff,补了符号位。最高位是符号位=1,右移后符号位保持不变*/;
a=0x80;
a=a>>1;/*变成了0xc0*/
a=0x1f;
a=a>>1;/*变成了0x0f,因为它开始的符号位就是0*/。
绛旓細鍙崇Щ涓浣嶇浉褰撲簬闄や互2銆備緥锛5>>1 5鐨勪簩杩涘埗琛ㄧず鏄101锛岄偅涔堝彸绉讳竴浣嶄箣鍚庢槸10灏辨槸2浜嗭紝鏄暣闄ょ殑锛涘乏绉荤殑璇濆氨鏄湪鍚庨潰琛ヤ竴涓浂锛岀浉褰撲簬鏄箻浠ヤ簩锛岄偅涔堝彉鎴愪簡1010锛屽崄杩涘埗鏄10銆101鍙崇Щ锛屽氨鏄妸鏈鍚庝竴浣嶆嬁鎺変簡锛屾槸10杩欎釜鏄簩杩涘埗鐨勶紝鍗佽繘鏄2锛5/2鏈潵鏄皬鏁帮紝浣嗚繖閲屾槸鏁存暟鎿嶄綔鐨勶紝鎵浠ユ妸灏忔暟...
绛旓細宸︾Щ灏辨槸锛氫涪寮冩渶楂樹綅锛0琛ユ渶浣庝綅
绛旓細瀵逛簬鏁村瀷鏉ヨ锛宸︾Щ涓浣嶇浉褰撲簬涔2锛屽彸绉讳竴浣嶇浉褰撲簬闄2锛屾墍浠1宸︾Щ3浣嶆槸8锛屽啀鍙崇Щ涓や綅鏄2 琛ュ厖锛 val<<24>>24鏈繀鏄姝や竴涓 姣斿瀵逛簬涓涓16浣嶉暱鐨勬暟鎹紝缁忚繃涓婇潰鐨勬搷浣滐紝鐩稿綋浜庡幓鎺変簡宸﹁竟8浣嶇殑鍊
绛旓細0111鍙崇Щ涓浣嶆槸鎶婃渶鍚庝竴浣嶇殑1鍘绘帀锛屽乏杈硅ˉ涓0锛屽緱0011锛岃浆鎹负鍗佽繘鍒舵槸3锛岃繖鏄纭殑銆傚苟涓嶇瓑鍚屼簬闄や互2
绛旓細C璇█涓紝鈥<<鈥濅负宸︾Щ杩愮畻绗︼紝鈥>>鈥濅负鍙崇Щ杩愮畻绗銆傚叿浣撲娇鐢ㄦ柟娉曞涓嬶細1銆佸乏绉昏繍绠楃(<<)灏嗕竴涓繍绠楀璞$殑鍚勪簩杩涘埗浣嶅叏閮ㄥ乏绉昏嫢骞蹭綅(宸﹁竟鐨勪簩杩涘埗浣嶄涪寮冿紝鍙宠竟琛0)銆備緥:a = a << 2 灏哸鐨勪簩杩涘埗浣嶅乏绉2浣嶏紝鍙宠ˉ0锛屽乏绉1浣嶅悗a = a * 2; 鑻ュ乏绉绘椂鑸嶅純鐨勯珮浣嶄笉鍖呭惈1锛屽垯姣忓乏绉...
绛旓細aa=_crol_(aa,1); //宸︾Щ涓浣 aa=_cror_(aa,1); //鍙崇Щ涓浣 鍙互鎵撳紑锛歩ntrins.h锛屾煡鐪嬨
绛旓細鍥犱负鏄寜8杩涘埗杈撳叆鐨勶紝8杩涘埗鐨24鎹㈡垚10杩涘埗灏辨槸20锛屾崲鎴2杩涘埗灏辨槸00010100锛堜互1瀛楄妭琛ㄧず锛夈傝00010100寰幆鍙崇Щ2浣嶅悗灏辨槸00000101锛屽嵆10杩涘埗鐨5锛岃5鎸8杩涘埗杈撳嚭锛堣緭鍑烘牸寮忎负%o锛夛紝灏辨槸5銆00010100寰幆宸︾Щ2浣嶅悗鏄01010000锛岀敤10杩涘埗琛ㄧず灏辨槸80锛岃80鎸8杩涘埗杈撳嚭锛堣緭鍑烘牸寮忎负%o锛夛紝灏辨槸120銆
绛旓細宸︾Щ涓浣嶅氨澶т袱鍊 缁撴灉涓10 鍙崇Щ涓浣嶇殑璇濓紝灏辨槸缂╁皬涓ゅ嶏紝缁撴灉涓2锛屽鏋滀綘鏄暣褰㈢殑璇 浣犺繖涓粨鏋滄槸10
绛旓細鍥炵瓟鐨勫ソ璇烽噰绾冲摝锛侊紒锛佽繖鏄C璇█涓鐨勨鍙崇Щ杩愮畻绗︹濄備竴鑸儏鍐典笅锛屼粬鏄寜浣嶆搷浣溿傜壒鐐癸細1.鍙岀洰杩愮畻绗︼紝灏卞儚+銆-銆*銆/涓鏍凤紝鏍煎紡涓猴紙鏁1锛>>锛堟暟2锛2.鏁1鏄鎿嶄綔鏁帮紝濡傝鍑忔暟銆佽闄ゆ暟绛夛紱鏁2鏄彸绉讳綅鏁般3.浼樺厛绾т綆锛岀粨鍚堟э細浠庡乏鍚戝彸杩愮畻 濡傦細8>>1=锛熻〃绀哄皢琚Щ鏁板悜鍙绉诲姩1浣 濡...
绛旓細缁撴灉鏄-1锛屾暣褰㈡暟鎹湪璁$畻鏈轰腑鐨勬暟鎹殑淇濆瓨鍜岃繍绠楅兘鏄互浜岃繘鍒剁殑褰㈠紡杩涜鐨,浣嗕笉鏄洿鎺ョ殑鍘熺爜,鑰屾槸鍘熺爜鐨勮ˉ鐮侊紝姝f暟鐨勮ˉ鐮佹槸瀹冩湰韬紝璐熸暟鐨勮ˉ鐮佹槸鎸変綅鍙栧弽鍐嶅姞1锛屾墍浠 -1 =0000 1111