生活随笔
收集整理的這篇文章主要介紹了
获取一个 Byte 的各个 Bit 值
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
轉(zhuǎn)載自? ?獲取一個(gè) Byte 的各個(gè) Bit 值
1. bit:位
??? 一個(gè)二進(jìn)制數(shù)據(jù)0或1,是1bit;
2. byte:字節(jié)
??? 存儲(chǔ)空間的基本計(jì)量單位,如:MySQL中定義 VARCHAR(45)? 即是指 45個(gè)字節(jié);
??? 1 byte = 8 bit
3. 一個(gè)英文字符占一個(gè)字節(jié);
??? 1 字母 = 1 byte = 8 bit
4. 一個(gè)漢字占2個(gè)字節(jié);
??? 1 漢字 = 2 byte = 16 bit
byte:一個(gè)字節(jié)(8位)(-128~127)(-2的7次方到2的7次方-1)
short:兩個(gè)字節(jié)(16位)(-32768~32767)(-2的15次方到2的15次方-1)
int:四個(gè)字節(jié)(32位)(一個(gè)字長(zhǎng))(-2147483648~2147483647)(-2的31次方到2的31次方-1)
long:八個(gè)字節(jié)(64位)(-9223372036854774808~9223372036854774807)(-2的63次方到2的63次方-1)
float:四個(gè)字節(jié)(32位)(3.402823e+38 ~ 1.401298e-45)(e+38是乘以10的38次方,e-45是乘以10的負(fù)45次方)
double:八個(gè)字節(jié)(64位)(1.797693e+308~ 4.9000000e-324
?
Java中數(shù)據(jù)流的操作很多都是到byte的,但是在許多底層操作中是需要根據(jù)一個(gè)byte中的bit來(lái)做判斷!
Java中要根據(jù)byte獲得bit就要進(jìn)行一些位操作,不過(guò)為了使用我直接給出解決方案,至于位操作的一些內(nèi)容,回頭再說(shuō)!
package?com.test;??import?java.util.Arrays;??public?class?T?{??????????????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;??????}??????????????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;?????????????????????System.out.println(Arrays.toString(getBooleanArray(b)));????????????????????System.out.println(byteToBit(b));????????????????????System.out.println(Integer.toBinaryString(0x35));??????}??}??
?輸出內(nèi)容就是各個(gè) bit 位的 0 和 1 值!
?
根據(jù)各個(gè)Bit的值,返回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)?{??????????if?(byteStr.charAt(0)?==?'0')?{??????????????re?=?Integer.parseInt(byteStr,?2);??????????}?else?{??????????????re?=?Integer.parseInt(byteStr,?2)?-?256;??????????}??????}?else?{??????????re?=?Integer.parseInt(byteStr,?2);??????}??????return?(byte)?re;??}??
?
總結(jié)
以上是生活随笔為你收集整理的获取一个 Byte 的各个 Bit 值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。