java bit是什么,讓我們一起了解一下?
bit是Binary digit(二進制數(shù)位)的縮寫,意為“位”或“比特”,是計算機運算的基礎。Java中,byte意為字節(jié),是計算機文件大小的基本計算單位,1Byte=8bit(1B=8b)。
Byte與bit的關系是怎樣的?
在計算機科學中,bit是表示信息的最小單位,叫做二進制位;一般用0和1表示。?
而Byte叫做字節(jié),由8個位(8bit)組成一個字節(jié)(1Byte),用于表示計算機中的一個字符。bit與Byte之間可以進行換算,其換算關系為:1Byte=8bit(或簡寫為:1B=8b)。在實際應用中一般用簡稱,即1bit簡寫為1b(注意是小寫英文字母b),1Byte簡寫為1B(注意是大寫英文字母B)。
在java中bit如何具體操作?
Java中數(shù)據(jù)流的操作很多都是到byte的,但是在許多底層操作中是需要根據(jù)一個byte中的bit來做判斷,Java中要根據(jù)byte獲得bit,就要進行一些位操作。
具體實例如下:
package?com.test;?? import?java.util.Arrays;?? public?class?T?{?? ????/**? ?????*?將byte轉(zhuǎn)換為一個長度為8的byte數(shù)組,數(shù)組每個值代表bit? ?????*/?? ????public?static?byte[]?getBooleanArray(byte?b)?{?? ????????byte[]?array?=?new?byte[8];?? ????????for?(int?i?=?7;?i?>=?0;?i--)?{?? ????????????array[i]?=?(byte)(b?&?1);?? ????????????b?=?(byte)?(b?>>?1);?? ????????}?? ????????return?array;?? ????}?? ????/**? ?????*?把byte轉(zhuǎn)為字符串的bit? ?????*/?? ????public?static?String?byteToBit(byte?b)?{?? ????????return?""?? ????????????????+?(byte)?((b?>>?7)?&?0x1)?+?(byte)?((b?>>?6)?&?0x1)?? ????????????????+?(byte)?((b?>>?5)?&?0x1)?+?(byte)?((b?>>?4)?&?0x1)?? ????????????????+?(byte)?((b?>>?3)?&?0x1)?+?(byte)?((b?>>?2)?&?0x1)?? ????????????????+?(byte)?((b?>>?1)?&?0x1)?+?(byte)?((b?>>?0)?&?0x1);?? ????}?? ????public?static?void?main(String[]?args)?{?? ????????byte?b?=?0x35;?//?0011?0101?? ????????//?輸出?[0,?0,?1,?1,?0,?1,?0,?1]?? ????????System.out.println(Arrays.toString(getBooleanArray(b)));?? ????????//?輸出?00110101?? ????????System.out.println(byteToBit(b));?? ????????//?JDK自帶的方法,會忽略前面的?0?? ????????System.out.println(Integer.toBinaryString(0x35));?? ????}?? }
輸出內(nèi)容就是各個 bit 位的 0 和 1 值!
再根據(jù)各個Bit的值,返回byte的代碼:
/**? ?*?二進制字符串轉(zhuǎn)byte? ?*/?? public?static?byte?decodeBinaryString(String?byteStr)?{?? ????int?re,?len;?? ????if?(null?==?byteStr)?{?? ????????return?0;?? ????}?? ????len?=?byteStr.length();?? ????if?(len?!=?4?&&?len?!=?8)?{?? ????????return?0;?? ????}?? ????if?(len?==?8)?{//?8?bit處理?? ????????if?(byteStr.charAt(0)?==?'0')?{//?正數(shù)?? ????????????re?=?Integer.parseInt(byteStr,?2);?? ????????}?else?{//?負數(shù)?? ????????????re?=?Integer.parseInt(byteStr,?2)?-?256;?? ????????}?? ????}?else?{//?4?bit處理?? ????????re?=?Integer.parseInt(byteStr,?2);?? ????}?? ????return?(byte)?re;?? }
以上就是小編今天的分享了,希望可以幫助到大家。