java 實現(xiàn)取int型的第二個字節(jié)的數(shù)
取int型的第二個字節(jié)的數(shù)
無意中看到某個題目,前提條件,一個byte最多表示256位,因為其是由8個位表示 ,八個1 最多表示256位。
一個int由32位組成,所以是4個byte表示。題目要求是給定一個int數(shù)字,問第二個byte是多少。剛開始不會寫。
再后來復習nio時,突然想到這題。
1.首先創(chuàng)建 Bytebuffer
其內部是由byte組成的數(shù)組。因為我們保存一個int 只需要創(chuàng)建一個大小為4byte的即可。下面看代碼。
? public static void main(String[] args) throws IOException { ? ? ? ? ByteBuffer bb=ByteBuffer.allocate(4); //創(chuàng)建大小為4的byteBuffer ? ? ? ? bb.asIntBuffer().put(5566); //以int視圖將任意int數(shù)存進去 ? ? ? ? ? ? ? System.out.println(Arrays.toString(bb.array())); ? ?//打印出改bytebuffer,其中想要第幾個byte就取出就好了 ? ? }
結果
[0, 0, 21, -66]
2.通過位運算計算
首先
int a=5566;
a=a>>8;
a=a&0xff;
得到的a就是 第二位的值
3.附一個int轉byte數(shù)組
? private static ?byte[] intToByte(int in){ ? ? byte [] b=new byte[4]; ? ? b[3]= (byte) (in&0xff); ? ? b[2]= (byte) (in>>8 &0xff); ? ? b[1]= (byte) (in>>16 &0xff); ? ? b[0]= (byte) (in>>24 &0xff); ? ? return b; ? ? }
int的取值范圍
int型的數(shù)據(jù)字節(jié)長度是4,一共是32位,第一位用于表示正負號,其他位的數(shù)字組成它所代表的值,
例如7的二進制表示形式為
00000000 00000000 00000000 00000111
當表示負數(shù)的時候,則采用的是補碼的形式,第一位是1,
例如-7的二進制表示為
11111111 11111111 11111111 11111001
int型數(shù)據(jù)的取值范圍:-2^31—-2^31-1
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
java使用WatchService監(jiān)控文件夾示例
本篇文章主要介紹了java使用WatchService監(jiān)控文件夾示例的資料,這里整理了詳細的代碼,有需要的小伙伴可以參考下。2017-02-02mybatis plus動態(tài)數(shù)據(jù)源切換及查詢過程淺析
這篇文章主要介紹了mybatis plus動態(tài)數(shù)據(jù)源切換及查詢過程淺析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12Spring依賴注入Dependency Injection的三種方式
依賴注入(Dependency Injection)和控制反轉(Inversion of Control)是同一個概念。具體含義是:當某個角色(可能是一個Java實例,調用者)需要另一個角色(另一個Java實例,被調用者)的協(xié)助時,在傳統(tǒng)的程序設計過程中,通常由調用者來創(chuàng)建被調用者的實例2023-02-02