日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java合并整形_java中2个int合并成一个long

發布時間:2025/4/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java合并整形_java中2个int合并成一个long 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

延續32位時代的邏輯通常只會在32位整數中取出高16位和低16位的短整數(short)或相反的合并操作,如c/c++語系中loword和hiword?,F在64位的cpu普及到已是標配了,所以這種經典的算法也會在64位的long中也會有相應的應用。我在使用中則遇到了一些問題,記錄下備忘。

需要取32位int的高低16位,或是合并2個int到64位中,即是通過cpu中最基本的"與"、"或"和位移算法來實現。如想要取64位的高32位,那么是通過"與"算法屏蔽掉低32位再把高32位移動到低32位,最后存儲到32位的寄存器里。合并則反之操作。

下面貼代碼

合并2個32位整數到64位

public static long combineInt2Long(int low, int high) {

return ((long)low & 0xFFFFFFFFl) | (((long)high << 32) & 0xFFFFFFFF00000000l);

}

需要注意的是一定要把low和hight先轉換成long在進行或運算,不然一定會出錯的。

取64位整數的高低32位

public static int[] separateLong2int(Long val) {

int[] ret = new int[2];

ret[0] = (int) (0xFFFFFFFFl & val);

ret[1] = (int) ((0xFFFFFFFF00000000l & val) >> 32);

return ret;

}

總結

以上是生活随笔為你收集整理的java合并整形_java中2个int合并成一个long的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。