1樓:中學知識快遞
「無雙少城主」的回答可以給個最佳。
2樓:無雙少城主
1. int型別一般是4個位元組,一個位元組有8位,這樣int型資料二進位制的完整形式有32位,而byte表示一個位元組,於是byte型別資料二進位制的完整形式有8位。
2. 二進位制資料在計算機內是以二進位制儲存的,要注意一點,計算機在儲存某個資料時,是儲存的資料的補碼,說明一下補碼與原碼關係,正數補碼與原碼相同,負數補碼是原碼減1後取反。
3. 根據上面闡述,129的原碼是00000000 00000000 00000000 10000001 ,負數最高位取1,那麼-129便是10000000 00000000 00000000 10000001 ,補碼計算:減1為10000000 00000000 00000000 10000000 ,再取反為11111111 11111111 11111111 01111111(最高位是符號位,不參與取反),現在轉換為byte,只有8位,於是只能保留低8位,前面24位丟去,得到01111111,這就對應著十進位制的127.
關於j**a中型別轉化運算 為什int型128轉換成 byte型就成了-128了呢?
3樓:晶魚小公舉
這個涉及補碼的知識。我先給你寫出結論:正數的補碼是本身的二進位制表示,負數的補碼=對應正數的二進位制反碼+1(反碼即二進位制的所以位取反),並規定首位為符號位不表示值,0為正1為負。
說了這麼一堆,有啥用呢?有!整數在計算機中就是以補碼的形式儲存的。
ok基礎有了我們來看看這個問題。int 型別的128,沒有問題,int儲存邊界遠比比128大。而轉化成byte型別,問題就來了。
我們先來看int型別的128的二進位制表示:0000-0000-0000-0000-0000-0000-1000-0000也就是它的補碼
轉化成byte型別表示為:
1000-0000
我們會發現這裡首位需要表示為值!但是遺憾計算機不會自動識別造型時的期望值。1000-0000在計算機中是一個補碼而並非一串正數二進位制。
我們對它取反得到0111-1111發現正是最大的byte型別值127,再加一得128,而首位為1,表示為負,即1000-0000表示的就是-128就是最小的byte值。
這也就是byte型別值介於-128~127的原因。後面一個方法是一樣的,不再贅述。
當然補碼的知識不止於此,有興趣可以在網上尋找有關資料。
4樓:匿名使用者
int符號位太高,位元組位太少,符號位被128賦值成1是負數
-128到127是一個位元組全部的數。
5樓:張ban仙兒
byte型別的取值範圍是-128~127
所以int轉換之後回丟掉多餘的部分-129變成-128而128變成127
6樓:aa彼岸花開
因為越界了。你可以看一下資料型別的範圍就明白了。128這個數已經超過了byte的範圍
7樓:
這個和編碼過程有關
網頁連結
8樓:輕狂看世界
紙醉金迷昏天黑地天昏地暗,燈紅酒綠,渾渾噩噩,哀鴻遍野,不見天日,暗無天日,暗淡無光,黯然傷神,惶惶不可終日,窮困潦倒,風餐露宿,吃不飽,穿不暖,吃了上頓沒下頓,缺衣少食,粗茶淡飯,舉步維艱,布衣蔬食,衣不蔽體,備受煎熬,萬劫不復。紙醉金迷昏天黑地天昏地暗,燈紅酒綠,渾渾噩噩,哀鴻遍野,不見天日,暗無天日,暗淡無光,黯然傷神,惶惶不可終日,窮困潦倒,風餐露宿,吃不飽,穿不暖,吃了上頓沒下頓,缺衣少食,粗茶淡飯,舉步維艱,布衣蔬食,衣不蔽體,備受煎熬,萬劫不復。
j**a中int資料型別轉byte型別,int數為-129,答案儘可能詳細
9樓:
int 是4位元組的, 用補碼儲存
-129: 原碼: 1000 0000, 0000 0000, 0000 0000, 1000 0001
反碼: 1111 1111, 1111 1111, 1111 1111, 0111 1110
補碼: 1111 1111, 1111 1111, 1111 1111, 0111 1111
轉成byte後, 高的3個位元組就被捨棄了, 剩最低的一個位元組也就是 0111 1111
十六進位制為 7f
無符號10進製為 127
有符號10進位制也是 127
10樓:
public static byte tobytearray(int isource, int iarraylen)
return blocalarr;}
在j**a中int轉byte型別,超出byte的範圍該如何計算,答案儘可能詳細
11樓:匿名使用者
short,byte轉int都是補零拉長,反過來,int轉byte時,取低八位,其餘丟掉.129轉換為byte時為1000 0001,為補碼形式,轉為原碼-127.
12樓:匿名使用者
程式要儘量避免溢位,這是原則,一旦溢位,再去研究值是什麼已經沒有意義。
以下大概給你說明一下:
一個位元組byte長8位,也就是2的8次方,換成2進位制後就是00000000~11111111
取值範圍就是那麼多,10進位制就是0~255。
如果更長的型別如int轉成更短的型別,那麼只保留短型別那麼多長度的資料。
假設型別a為9位,其某變數值為
0 1111 1111 ,10進製為255,轉成byte正好也是255
假設型別a變數值為
1 0000 0000 ,換算成10進製為256,轉成byte為0其中具體是截斷前面還是後面,是根據編譯工具和版本來決定的,不同的語言可能會有不同的定義。
這樣說你大概可以明白了吧?
13樓:在高椅古村看高達的辰砂
計算機執行的是補碼,也就是上文中得出的1000 0001是補碼,計算機執行時再轉換成原碼就是1111 1111,即-127.
j**a的型別轉換報錯: 不相容的型別: 從int轉換到byte可能會有損失
14樓:匿名使用者
0x80如果不記述的話就是作為int型別,int是第一位是有符號的,0x80 大於127的數字,所以佔用兩位,byte只能佔用一位,當然會出錯。 如果要使用int賦值byte 0x80必須使用負數。 或者使用byte進行強制轉換 byte a = (byte)0x80
j**a中為什麼兩個byte整數想加的結果超出表述範圍後強制轉換byte型別後會得到負數,具體過程
15樓:匿名使用者
byte
取值範圍 -128~127 最高位符號位
67 0100 0011
89 0101 1001
156 1001 1100
67+89=156變成了int型別 24個0 1001 1100 強制轉換成byte型別。砍掉了前面24個0。
還是 1001 1100,這個數在int型別中是156,但是在byte中就是-100。
具體看這裡:
(byte)
127 = 0111 1111
127+1 = 128,超範圍,上溢位,變成-128 1000 0000
那麼-128+1呢? ------> 1000 0001
所有156(int) = 1001 1100(byte)= -128 + 28 = -100。
byte陣列與int型別互相轉換的幾種方式
如何把硬碟的格式FAT32轉換成NTFS
個人認為 1,ntfs最實用的優點在於支援單個4g以上大檔案,特別是現在很多影片或者 映象檔案都超過4g的情況下 2,另外,ntfs可以管理目錄許可權,多了安全性管理。至於格式化嘛,你右鍵點我的電腦進 管理 再進 磁碟管理 就可以格式化了。看錯了,你說的是轉換,就按樓上的做吧。應該是在安裝過程中就提...
誰會把pdf轉換成能編輯的,誰會把pdf轉換成能編輯的doc
有以下幾個方法 1 首先要明白不是所有的pdf的文件都能轉換成word格式的,有的pdf文件是圖形掃描形成的,無法轉換成可編輯的格式。2 用轉換工具,如solid converter pdf pdf password remover anybizsoft pdf converter v2.5 e p...
CAD圖紙轉換成PDF列印出來為什麼字型會自動加粗
檢查你的字型是否設定了線寬,字型是否用的是shx字型。因為cad轉pdf的時候,轉成的是向量檔案pdf,所以縮小的時候看是很粗的,放大就會變細。還有就是你在列印到虛擬的pdf檔案的時候,設定列印樣式 把線寬修改下,修改到0.05左右 最好在0.1以下,到0.1的話我列印試過很多,和原始粗細差不多 到...