首頁>Club>
28
回覆列表
  • 1 # IT技術討論

    在這裡我們需要先了解另一個單位:bit “位元”,bit是計算機進行資料儲存的最小單位,計算機內部利用二進位制儲存資料,一bit(位元)就代表一位二進位制。即一個bit就代表一個0或1。

    而Byte(“位元組”)是計算機進行資料儲存的基本單位。一Byte有八位二進位制也就是1Byt = 8bit

    資料的儲存又分為有符號和無符號數,有符號數二進位制的最後高代表符號,0代表+(正),1代表-(負),如:有符號數011 轉換為十進位制為2^0+2^1=3,無符號111轉換為十進位制則為-3。(有下劃線的數字代表符號位,後面同樣如此)

    然後我們開始正式介紹Byte範圍的計算

    當Byte無符號時

    Byte的範圍可以由二進位制表示為 0000 0000 ~ 1111 1111,

    將二進位制轉化為十進位制:

    0000 0000 = 0;

    1111 1111 = 2^0+2^1+2^2+2^3+2^4+2^5+2^6+2^7 = 255;

    所以Byte的取值範圍為 0 ~255 。

    當Byte有符號時

    由於最後一位變為了符號位 所以0 1111111成了最大的數。

    將二進位制轉化為十進位制:

    0 1111111 = 2^0+2^1+2^2+2^3+2^4+2^5+2^6 = 127;

    負數需要用補碼錶示,1 1111111的絕對值取反得到0000000 轉換為十進位制為 0加一取反則為補碼 :-1

    將1 0000000的絕對值取反得到11111111 轉換為十進位制為 127

    再加一取反為 -128

    所以Byte有符號時的取值範圍為 -128~127

    java採用的有符號儲存,所以java中Byte的取值範圍採用有符號時計算。

  • 2 # 夕陽雨晴

    在說byte之前,我們先來說說位元,位元是表示資訊的最小單位,是二進位制數的一位包含的資訊或2個選項中特別指定1個的需要資訊量。一般來說,n位元的資訊量可以表現出2的n次方種選擇。而byte意為“位元組”,是計算機檔案大小的基本計算單位。1byte=8bits,兩者換算是1:8的關係。1bit 只能有一個值,0 或者 1。

    在《Head First Java》中的描述byte(基本資料型別,裝配型別為Byte)作為Java中4中基本整數型別的一種,其它三種是long、int、short。透過前面的瞭解,byte是1個位元組,也就是8位,以杯子類比,每種整型型別變數有固定的位數(杯子大小):byte,8bits,-128~127;short,16bits,-32768~32767;int,32bits,-2147483648~2147483647;long,64bits,-很大~+很大。

    具體的關於byte的計算方式,推薦以下兩種,混合著進行理解記憶。

    第一種是機器記憶體儲結構的分析:

    在計算機內,定點數有3種表示法:原碼、反碼和補碼

    [原碼]二進位制定點表示法,即最高位為符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。

    [反碼]表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。

    [補碼]表示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。

    計算機資料是用補碼錶示的,正數的補碼就是它的原碼,而負數的補碼是將其原碼(取絕對值後的原碼)取反加1得到的。

    第二種是byte概念意義上的理解:

    1.確定byte是1個位元組,也就是8位

    2.最大的應該是0111 1111,因為第一位是符號位,0表示正數

    3.最小的應該是1000 0000(1111 1111是是負數-1的補碼)

    4.0111 1111即127

    5.1000 0000按照上面的解釋為先減一,得到0111 1111,然後按位取反得到1000 0000,該結果為欲求負數的絕對值,所以結果是-128(和概念反著來求出該負數)。

  • 中秋節和大豐收的關聯?
  • 勞塔羅梅開二度,國米主場2比1戰勝斯帕爾登上意甲榜首。如何評價藍黑軍團此役的表現?