淺談java中的移動(dòng)位運(yùn)算:,>>>
1. 概念
<< 左移運(yùn)算符,左移是在后面補(bǔ)0, num << 1,相當(dāng)于num乘以2
>> 右移運(yùn)算符, 右移是在前面補(bǔ)1或0,num >> 1, 相當(dāng)于num除以2
>>> 無符號(hào)右移,是在前面補(bǔ)0, 忽略符號(hào)位,空位都以0補(bǔ)齊
另外, 不論是左右還是右移32位,相當(dāng)于不移動(dòng),還是原值。
實(shí)際上 在java虛擬機(jī)執(zhí)行這句代碼的時(shí)候如下這樣執(zhí)行的:
5>>(n%32)--->結(jié)果
你這里n=32 ;所以5>>32即是 5>>(32%32)-->5>>0 的結(jié)果;
2. 測(cè)試代碼
public class Test{
public Test(){
System.out.println("=============算術(shù)右移 >> ===========");
int i=0xC0000000;
System.out.println("移位前:i= "+i+" = "+Integer.toBinaryString(i)+"(B)");
i=i>>28;
System.out.println("移位后:i= "+i+" = "+Integer.toBinaryString(i)+"(B)");
System.out.println("---------------------------------");
int j=0x0C000000;
System.out.println("移位前:j= "+j+" = "+Integer.toBinaryString(j)+"(B)");
j=j>>24;
System.out.println("移位后:j= "+j+" = "+Integer.toBinaryString(j)+"(B)");
System.out.println("\n");
System.out.println("==============邏輯右移 >>> =============");
int m=0xC0000000;
System.out.println("移位前:m= "+m+" = "+Integer.toBinaryString(m)+"(B)");
m=m >>> 28;
System.out.println("移位后:m= "+m+" = "+Integer.toBinaryString(m)+"(B)");
System.out.println("---------------------------------");
int n=0x0C000000;
System.out.println("移位前:n= "+n+" = "+Integer.toBinaryString(n)+"(B)");
n=n>>24;
System.out.println("移位后:n= "+n+" = "+Integer.toBinaryString(n)+"(B)");
System.out.println("\n");
System.out.println("==============移位符號(hào)的取模===============");
int a=0xCC000000;
System.out.println("移位前:a= "+a+" = "+Integer.toBinaryString(a)+"(B)");
System.out.println("算術(shù)右移32:a="+(a>>32)+" = "+Integer.toBinaryString(a>>32)+"(B)");
System.out.println("邏輯右移32:a="+(a>>>32)+" = "+Integer.toBinaryString(a>>>32)+"(B)");
System.out.println("算術(shù)右移64:a="+(a>>64)+" = "+Integer.toBinaryString(a>>64)+"(B)");
System.out.println("邏輯右移64:a="+(a>>>64)+" = "+Integer.toBinaryString(a>>>64)+"(B)");
}
public static void main(String[] args){
new Test();
}
}
運(yùn)行結(jié)果:
=============算術(shù)右移 >> ===========
移位前:i= -1073741824 = 11000000000000000000000000000000(B)
移位后:i= -4 = 11111111111111111111111111111100(B)移位前:j= 201326592 = 1100000000000000000000000000(B)
移位后:j= 12 = 1100(B)==============邏輯右移 >>> =============
移位前:m= -1073741824 = 11000000000000000000000000000000(B)
移位后:m= 12 = 1100(B)移位前:n= 201326592 = 1100000000000000000000000000(B)
移位后:n= 12 = 1100(B)==============移位符號(hào)的取模===============
移位前:a= -872415232 = 11001100000000000000000000000000(B)
算術(shù)右移32:a=-872415232 = 11001100000000000000000000000000(B)
邏輯右移32:a=-872415232 = 11001100000000000000000000000000(B)
算術(shù)右移64:a=-872415232 = 11001100000000000000000000000000(B)
邏輯右移64:a=-872415232 = 11001100000000000000000000000000(B)
3. 為什么沒有無符號(hào)左移
這個(gè)問題大家可以思考一下,應(yīng)該能想出來。(提示:沒有就是沒有存在的意思)
以上所述是小編給大家介紹的java中的移動(dòng)位運(yùn)算:,>>>詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
java實(shí)現(xiàn)微信掃碼登錄第三方網(wǎng)站功能(原理和代碼)
為避免繁瑣的注冊(cè)登陸,很多平臺(tái)和網(wǎng)站都會(huì)實(shí)現(xiàn)三方登陸的功能,增強(qiáng)用戶的粘性。這篇文章主要介紹了java實(shí)現(xiàn)微信掃碼登錄第三方網(wǎng)站功能(原理和代碼),避免做微信登錄開發(fā)的朋友們少走彎路2022-12-12
Java基礎(chǔ)-Java編程語(yǔ)言發(fā)展史
這篇文章主要介紹了Java基礎(chǔ)-Java編程語(yǔ)言發(fā)展簡(jiǎn)史,Java源自Sun公司的一個(gè)叫Green的項(xiàng)目,其原先的目的是為家用電子消費(fèi)產(chǎn)品開發(fā)一個(gè)分布式代碼系統(tǒng),這樣就可以將通信和控制信息發(fā)給電冰箱、電視機(jī)、烤面包機(jī)等家用電器,對(duì)它們進(jìn)行控制和信息交流,需要的朋友可以參考一下2022-01-01
springMVC的RequestMapping請(qǐng)求不到路徑的解決
這篇文章主要介紹了springMVC的RequestMapping請(qǐng)求不到路徑的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
IDEA配置Tomcat后,控制臺(tái)tomcat?catalina?log出現(xiàn)亂碼問題
本文介紹了如何通過設(shè)置Tomcat和IDEA的編碼格式來解決編碼問題,首先嘗試修改Tomcat的logging.properties文件中的編碼設(shè)置,如果未解決問題,則調(diào)整IDEA的編碼設(shè)置,通過修改vmoptions文件來全局設(shè)置IDEA的編碼格式,作者分享了個(gè)人成功解決問題的方法和步驟,供其他開發(fā)者參考2024-09-09
SpringKafka消息發(fā)布之KafkaTemplate與事務(wù)支持功能
通過本文介紹的基本用法、序列化選項(xiàng)、事務(wù)支持、錯(cuò)誤處理和性能優(yōu)化技術(shù),開發(fā)者可以構(gòu)建高效可靠的Kafka消息發(fā)布系統(tǒng),事務(wù)支持特性尤為重要,它確保了在分布式環(huán)境中的數(shù)據(jù)一致性,感興趣的朋友一起看看吧2025-04-04
Nginx+SpringCloud Gateway搭建項(xiàng)目訪問環(huán)境
本文主要介紹了Nginx+SpringCloud Gateway搭建項(xiàng)目訪問環(huán)境,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08

