1. 程式人生 > >byte char short long float double理解

byte char short long float double理解

首先byte、short、int、long都是整數型別。

     ①:byte佔一個位元組,也就是8位,而且byte 是有符號整形 用二進位制表示時候最高位為符號位 0代表正數 1代表負數。

max:01111111(十進位制:2^8-1=127)    

min:是11111111嗎?答案不是的。8位總共能表示256個數。00000000表示0,那10000000表示?

要注意正數在計算機中是以原碼形式存在的,負數在計算機中是以其補碼形式存在的,那麼一個負數的補碼是怎麼計算的呢? 就是負數的絕對值的原碼轉為二進位制再按位取反後加1。

-128的絕對值128,128原始碼10000000 取反:01111111 加1:10000000 故-128計算機中的表示就是 1000 0000 了。

-2^7(-128)<byte<2^7-1(127)

jdk中 Byte.class中的原始碼:

/**      * A constant holding the minimum value a <code>byte</code> can      * have, -2<sup>7</sup>.      */     public static final byte   MIN_VALUE = -128;     /**      * A constant holding the maximum value a <code>byte</code> can      * have, 2<sup>7</sup>-1.      */     public static final byte   MAX_VALUE = 127;      ②同理:short佔2位,int佔4位,long佔8位,都是有符號整型。
 /**
     * A constant holding the minimum value a <code>short</code> can
     * have, -2<sup>15</sup>.
     */
    public static final short   MIN_VALUE = -32768;


    /**
     * A constant holding the maximum value a <code>short</code> can
     * have, 2<sup>15</sup>-1.
     */
    public static final short   MAX_VALUE = 32767;
                                     -2^15(-32768)<byte<2^15-1(32767)
/**
     * A constant holding the minimum value an <code>int</code> can
     * have, -2<sup>31</sup>.
     */
    public static final int   MIN_VALUE = 0x80000000;


    /**
     * A constant holding the maximum value an <code>int</code> can
     * have, 2<sup>31</sup>-1.
     */
    public static final int   MAX_VALUE = 0x7fffffff;

 -2^31(-2147483648)<byte<2^31-1(2147483647)
 /**
     * A constant holding the minimum value a <code>long</code> can
     * have, -2<sup>63</sup>.
     */
    public static final long MIN_VALUE = 0x8000000000000000L;


    /**
     * A constant holding the maximum value a <code>long</code> can
     * have, 2<sup>63</sup>-1.
     */
    public static final long MAX_VALUE = 0x7fffffffffffffffL;

 -2^63<byte<2^63-1 char作為16位無符號整形 其範圍為 0 —— 2^15,float佔4位,double佔8位。 謝謝這位大哥:轉載地址

相關推薦

byte char short long float double理解

首先byte、short、int、long都是整數型別。      ①:byte佔一個位元組,也就是8位,而且byte 是有符號整形 用二進位制表示時候最高位為符號位 0代表正數 1代表負數。 max:01111111(十進位制:2^8-1=127)     min

java 徹底理解 byte char short int float long double (轉)

遇到過很多關於 數值類型範圍的問題了,在這做一個總結,我們可以從多方面理解不同數值型別的所能表示的數值範圍 在這裡我們只談論 java中的數值型別 首先說byte: 這段是摘自jdk中 Byte.java中的原始碼: view plaincopy to clipbo

OC中char/short/int/float/double在64位系統中所佔位元組數

size_t charSize = sizeof(char); NSLog(@"charSize = %zu", charSize);

java int short long float double精度最大值整理

對於java的資料型別,既熟悉又陌生,於是整理了這篇文件。最近的面試讓我開始注意細節,細節真的很重要。一、分析基本資料型別的特點,最大值和最小值。1、基本型別:int 二進位制位數:32包裝類:java.lang.Integer最小值:Integer.MIN_VALUE=

java基本資料型別byte short int long float double char

byte 是 Java 原始型別。byte型別簡稱“位元組型”,用於表示整數。 int 是 Java 原始型別。 int型別簡稱“整型”,用於表示整數。 short是java原始型別。 short型別簡稱“短整型”,用於表示整數。 long是java原始型別。

C++ bool,char,short,int,long,float,double資料型別大小以及資料溢位值求解

以下討論皆在32位編譯環境下 型別含義 位元組數取值範圍 bool                        布林型10,1 char字元型 1[-2^7, 2^7-1] (2^7 = 128) wchar_t寬字元2[-2^15, 2^15-1] (2^15 = 32

byte[] 與shortfloatdouble的相互轉換

public class ShortFloatDoubleToByte { /** * double To byte[] * @param d * @return */ public static byte[] double2Bytes(do

java中byteshort、int、longfloatdoublechar基本資料類型範圍

基本型別,在Java中所有數字都是帶符號的。 型別 長度 範圍 byte       8bit/1byte         -27至27-1short     16bit/2byte        -215至215-1int          32bit/4byte       -231至231-1long

java byteshort、int、longfloatdoublechar基本資料類型範圍

基本型別,在Java中所有數字都是帶符號的。 型別 長度 範圍 byte 8bit/1byte 負2的7次方,至2的7次方-1 short 16b

charshortlongdouble佔幾個位元組,32位機中

char佔1位元組,short佔 2 位元組,int 、float、long 都佔 4 位元組,double 佔8 位元組 指標長度和地址匯流排有關。因為指標記錄的就是一個地址,那麼32位的就是4位元組,64位的就是8位元組。 發現一個問題,以下程式碼是在win10 64位系統下跑的

java對byte,short,char,int,long運算時自動型別轉化情況說明

大家都知道,在進行運算時,java會隱式的自動進行型別轉化,那麼有哪些情況會進行轉化呢?總結如下: 一、算術運算子 單目運算子:+(取正)-(取負) ++(自增1) --(自減1) 1.1 +(取正)

【C++基礎之四】c++ char in short long double佔位元組數

所以,int,long int,short int的寬度都可能隨編譯器而異。但有幾條鐵定的原則(ANSI/ISO制訂的): 1 sizeof(short int)<=sizeof(int) 2 sizeof(int)<=sizeof(lo

C的無符號資料型別int,short,byte 轉為 Java對應的資料long,char,short

//從網路中讀取C的無符號int,short,byte位元組陣列,相應轉換成java的long,char,short short anUnsignedByte = 0; char anUnsignedShort = 0; long anUnsigned

JAVA 各種數值型別最大值和最小值 Int, short, char, long, float,&nbs

程式碼片段: byte bmax, bmin; short shmax, shmin; char cmax, cmin; int imax, imin; long lmax,lmin; float fmax,fmin; double dmax,dmin;

弄懂進位制、bit、java基本資料型別(byteshort、int 、char 、String)、ASCII、Unicode、UTF-8、UTF-16的關聯關係及UTF-8、UTF-16編碼原理

首先普及一下基本概念: 1.數值(百度百科):指的是用數目表示的一個量的多少; 2.進位制(百度百科):也就是進位計數制,是人為定義的帶進位的計數方法。對於任何一種進位制---X進位制,就表示每一位置上的數運算時都是逢X進一位。 十進位制是逢十進一,十六進位制是逢十六進一,二進位制就是逢二進

深入理解C 浮點數 float double 型別資料比較 相等判斷

                浮點數在記憶體中的儲存機制和整型數不同,其有舍入誤差,在計算機中用近似表示任意某個實數。具體的說,這個實數由一個整數或定點數(即尾數)乘以某個基數(計算機中通常是2)的整數次冪得到,這種表示方法類似於基數為10的科學記數法。所以浮點數在運算過程中通常伴隨著因為無法精確表示而進行

C語言的int, float,double相互轉化 (從本質上理解可能的問題)

從學了C語言之後,一直習慣於C/C++任意的強制轉化,但是C語言的強制轉化卻總是帶來意想不到的後果,在這裡,我將從int,float,double的本質上講解這些可能出現的問題以及解決辦法,在下面你將看到: OK,現在好戲開始。

Arduino中資料型別轉換 float/double轉換為char 親測好使,dtostrf()函式

       如何輕鬆玩轉Arduino微控制器,當我在進行資料轉換的時候,遇到了問題,嘗試了C語言和C++中的好多函式,都沒有達到將float型資料轉換為char型的目的。苦苦查閱資料後,終於找到了一

C語言的int, float,double相互轉化(從本質上理解可能的問題)

從學了C語言之後,一直習慣於C/C++任意的強制轉化,但是C語言的強制轉化卻總是帶來意想不到的後果,在這裡,我將從int,float,double的本質上講解這些可能出現的問題以及解決辦法,在下面你將看到: OK,現在好戲開始。 int un

Java中char,short,int,long占幾個字節和多少位

als 後綴 運算 計量單位 bit 1byte decimal byte ima 1.字節:byte:用來計量存儲容量的一種計量單位;位:bit 2.一個字節等於8位 1byte = 8bit char占用的是2個字節 16位,所以一個char類型的可以存儲一個漢字。