JAVA三个移位运算符是啥意思 << 、>> 、>>> java运算符>>>是什么意思
JAVA\u4e09\u4e2a\u79fb\u4f4d\u8fd0\u7b97\u7b26 \u662f\u5565\u610f\u601d>> \u53f3\u79fb,\u9ad8\u4f4d\u8865\u7b26\u53f7\u4f4d \u53f3\u79fb\u4f4d\u8868\u793a\u96642
>>> \u7b26\u53f7\u53f3\u79fb,\u9ad8\u4f4d\u88650\uff1b \u4e0e>>\u7c7b\u4f3c
<< \u5de6\u79fb \u5de6\u79fb\u4f4d\u8868\u793a\u4e582
\u671b\u91c7\u7eb3
>>>\u662f\u65e0\u7b26\u53f7\u53f3\u79fb\uff0c\u5ffd\u7565\u7b26\u53f7\u4f4d\uff0c\u7a7a\u4f4d\u90fd\u4ee50\u8865\u9f50
java\u4e2d\u6709\u4e09\u79cd\u79fb\u4f4d\u8fd0\u7b97\u7b26
<<\uff1a\u5de6\u79fb\u8fd0\u7b97\u7b26\uff0cnum << 1,\u76f8\u5f53\u4e8enum\u4e58\u4ee52
>>\uff1a\u53f3\u79fb\u8fd0\u7b97\u7b26\uff0cnum >> 1,\u76f8\u5f53\u4e8enum\u9664\u4ee52
>>>\uff1a\u65e0\u7b26\u53f7\u53f3\u79fb\uff0c\u5ffd\u7565\u7b26\u53f7\u4f4d\uff0c\u7a7a\u4f4d\u90fd\u4ee50\u8865\u9f50
\u793a\u4f8b\u4ee3\u7801
public class Test {static int num = 0;public static void main(String[] args) {int number = -100;System.out.println("\u539f\u59cb: "+Integer.toBinaryString(number));System.out.println("\u5de6\u79fb: "+Integer.toBinaryString(number > 4));System.out.println("\u65e0\u7b26\u53f7\u53f3\u79fb:"+Integer.toBinaryString(number >>> 4));}}\u8f93\u51fa\u7ed3\u679c\uff0c\u53ef\u4ee5\u770b\u5230\u65e0\u7b26\u53f7\u53f3\u79fb\u5e76\u6ca1\u6709\u5728\u5de6\u8fb9\u8865\u4e0a1
“>>> 无符号右移,高位补0”; 与>>类似
“<< 左移” 左移一位表示乘2,二位就表示4,就是2的n次方
学习Java本来就是一件日积月累的事情,或许你通过自学能掌握一些皮毛技术,通过Java学习机构学到Java的一些基本大面,但想要做到精通,还是需要自己技术的日积月累和工作经验的不断积累。
今天给大家分享的技术知识是:Java中的位移运算符!
1) “有符号”左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。
左移移位相当于乘以2,例如
3 << 2 //12 则是将数字3左移2位 3*2*2 = 3*(2的2次方)
分析:首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12.数学意义:
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
2) “有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。 “有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。
>>运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,移位后得到的数字为正数则补0,负数补1。
例如11 >> 2,则是将数字11右移2位
分析:11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010.转换为十进制是3.数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。
3) Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0
4)右移一位相当于除以2,左移一位(在不溢出的情况下)相当于乘以2;移位运算速度高于乘除运算。
5)位运算符的优先级
~的优先级最高,其次是<<、>>和>>>,再次是&,然后是^,优先级最低的是|。
绛旓細鏈夌鍙峰彸绉浼氫繚鐣欐渶楂樹綅鐨勭鍙蜂綅锛屼粠娆¢珮浣嶅紑濮嬮愪綅鍙崇Щ濉0锛涜屾棤绗﹀彿鍙崇Щ浼氬皢绗﹀彿浣嶄竴璧峰彸绉伙紝骞跺皢楂樹綅鍏ㄩ儴濉0銆備緥锛氬浜庝竴涓猙yte绫诲瀷鐨勬暟10010100鏉ヨ锛屾湁绗﹀彿鍙崇Щ2浣嶅彉涓10000101锛岃屾棤绗﹀彿鍙崇Щ2浣嶅彉涓00100101銆傚墠鑰呬粛鐒舵槸涓涓礋鏁帮紝鑰屽悗鑰呭彉鎴愪簡姝f暟銆傚乏绉诲彧鏈夋湁绗﹀彿鐨勶紝娌℃湁鏃犵鍙峰乏绉汇
绛旓細鍦═hinking in Java绗笁绔犱腑鐨勪竴娈佃瘽:绉讳綅杩愮畻绗闈㈠悜鐨勮繍绠楀璞′篃鏄簩杩涘埗鐨勨滀綅鈥濄傚彲鍗曠嫭鐢ㄥ畠浠鐞嗘暣鏁扮被鍨嬶紙涓荤被鍨嬬殑涓绉嶏級銆傚乏绉讳綅杩愮畻绗︼紙<<锛夎兘灏嗚繍绠楃宸﹁竟鐨勮繍绠楀璞″悜宸︾Щ鍔ㄨ繍绠楃鍙充晶鎸囧畾鐨勪綅鏁帮紙鍦ㄤ綆浣嶈ˉ0锛夈傗滄湁绗﹀彿鈥濆彸绉讳綅杩愮畻绗︼紙>>锛夊垯灏嗚繍绠楃宸﹁竟鐨勮繍绠楀璞″悜鍙崇Щ鍔ㄨ繍绠楃...
绛旓細鈥滄湁绗﹀彿鈥濆彸绉讳綅杩愮畻绗浣跨敤浜嗏滅鍙锋墿灞曗濓細鑻ュ间负姝o紝鍒欏湪楂樹綅鎻掑叆0锛涜嫢鍊间负璐燂紝鍒欏湪楂樹綅鎻掑叆1銆3)Java涔熸坊鍔犱簡涓绉嶁滄棤绗﹀彿鈥濆彸绉讳綅杩愮畻绗︼紙>>>锛夛紝瀹冧娇鐢ㄤ簡鈥滈浂鎵╁睍鈥濓細鏃犺姝h礋锛岄兘鍦ㄩ珮浣嶆彃鍏0銆傝繖涓杩愮畻绗︽槸C鎴朇++娌℃湁鐨勩俻ublic class Test3 { public static void main(String[] args...
绛旓細涓夈侀昏緫杩愮畻绗 閫昏緫杩愮畻绗﹀垎涓虹煭璺笌(&&)鍜岀煭璺垨(||)锛屽畠浠湪鍒ゆ柇澶嶅悎鏉′欢鏃堕潪甯搁噸瑕併傜煭璺昏緫鑳芥湁鏁堥伩鍏嶄笉蹇呰鐨勮绠楋紝鎻愰珮绋嬪簭鎬ц兘銆傚洓銆佷綅杩愮畻绗 杩涘叆浜岃繘鍒剁殑涓栫晫锛屼綅杩愮畻绗﹀鎸変綅涓(&), 鎸変綅鎴(|), 鎸変綅寮傛垨(^), 鎸変綅鍙栧弽(~)璁╀綘鑳藉鐩存帴鎿嶄綔鏁版嵁鐨勬瘮鐗逛綅銆绉讳綅杩愮畻绗濡傚乏绉(<<)...
绛旓細浣杩愮畻.>>浠h〃鍙绉,<<浠h〃宸︾Щ 100>>1浠h〃鍙崇Щ涓浣,100>>2浠h〃鍙崇Щ2浣.浠ユ绫绘帹.100鐨勪簩杩涘埗鏄 1100100,鍙崇Щ1浣嶄箣鍚庢槸110010锛java杈撳嚭鐨勬槸10杩涘埗鎵浠ュ簲璇ユ槸50.
绛旓細鎴戜滑鐭ラ亾锛屽湪java涓锛宨nt鏄崰4涓瓧鑺傜殑锛屼篃灏辨槸32浣嶃傝繖涓▼搴忥紝搴旇鏄负浜嗗皢涓涓猧nt绫诲瀷杞崲鎴32浣2杩涘埗鏁般傚師鐞嗭細1. <<锛氬乏绉昏繍绠楃锛屽湪娌℃湁鏁板瓧婧㈠嚭鐨勬儏鍐典笅锛屽乏绉讳竴浣嶉兘鐩稿綋浜庝箻浠2鐨1娆℃柟锛屽乏绉籲浣嶅氨鐩稿綋浜庝箻浠2鐨刵娆℃柟銆2. &锛氫綅杩愮畻绗︼紝褰撲袱杈规搷浣滄暟鐨勪綅鍚屾椂涓1鏃讹紝缁撴灉涓1锛屽惁鍒...
绛旓細java涓涓嶈兘21銆java绉讳綅杩愮畻绗鏈変笁绉嶏紝甯︾鍙峰乏绉昏繍绠楃銆2銆佸甫绗﹀彿鍙崇Щ杩愮畻绗︺3銆佹棤绗﹀彿鍙崇Щ杩愮畻绗︺
绛旓細<< 鍜>>鏄java涓鐨绉讳綅杩愮畻绗锛<<鏄乏绉讳綅锛>>鏄彸绉讳綅锛屽洜涓烘暟鎹瓨鍌ㄦ槸浜岃繘鍒剁殑鎵浠ュ乏绉1鐩稿綋浜庝箻浠2鐨1娆℃柟锛屽彸绉荤浉褰撲簬涔樹互2鐨-1娆℃柟锛屼緥濡 << : 宸绉昏繍绠楃锛宯um << 1,鐩稿綋浜巒um涔樹互2锛宯um << 2,鐩稿綋浜巒um涔樹互2鍐嶄箻浠2 >> : 鍙崇Щ杩愮畻绗︼紝num >> 1,鐩稿綋浜巒um闄や互...
绛旓細1)宸绉讳綅杩愮畻绗锛堬級鍒欏皢杩愮畻绗﹀乏杈圭殑杩愮畻瀵硅薄鍚戝彸绉诲姩杩愮畻绗﹀彸渚ф寚瀹氱殑浣嶆暟銆傗滄湁绗﹀彿鈥濆彸绉讳綅杩愮畻绗︿娇鐢ㄤ簡鈥滅鍙锋墿灞曗濓細鑻ュ间负姝o紝鍒欏湪楂樹綅鎻掑叆0锛涜嫢鍊间负璐燂紝鍒欏湪楂樹綅鎻掑叆1銆3)Java涔熸坊鍔犱簡涓绉嶁滄棤绗﹀彿鈥濆彸绉讳綅杩愮畻绗︼紙>>>锛夛紝瀹冧娇鐢ㄤ簡鈥滈浂鎵╁睍鈥濓細鏃犺姝h礋锛岄兘鍦ㄩ珮浣嶆彃鍏0銆傝繖涓杩愮畻绗︽槸C...
绛旓細Java涔熸坊鍔犱簡涓绉嶁滄棤绗﹀彿鈥濆彸绉讳綅杩愮畻绗锛>>>锛夛紝瀹冧娇鐢ㄤ簡鈥滈浂鎵╁睍鈥濓細鏃犺姝h礋锛岄兘鍦ㄩ珮浣嶆彃鍏0銆傝繖涓杩愮畻绗︽槸C鎴朇++娌℃湁鐨勩傝嫢瀵筩har锛宐yte鎴栬卻hort杩涜绉讳綅澶勭悊锛岄偅涔堝湪绉讳綅杩涜涔嬪墠锛屽畠浠細鑷姩杞崲鎴愪竴涓猧nt銆傚彧鏈夊彸渚х殑5涓綆浣嶆墠浼氱敤鍒般傝繖鏍峰彲闃叉鎴戜滑鍦ㄤ竴涓猧nt鏁伴噷绉诲姩涓嶅垏瀹為檯鐨勪綅鏁般傝嫢...