1. 程式人生 > >int 與 byte 的強制型別轉換

int 與 byte 的強制型別轉換

int佔4個位元組,32位
byte佔1個位元組,8位
所以強轉時會截斷前24位

在記憶體中表示形式( 注意java中是以補碼錶示一個數,所以表示形式是補碼,不是原碼! ):
int a = 3; 00000000 00000000 00000000 00000011 (強轉byte時前面24個0被截斷)
byte b = 3; 00000011
int a = -3; 11111111 11111111 11111111 11111101 (強轉byte時前面24個1被截斷)
byte b = -3 11111101

    1、Java中用補碼形式表示
    2、第一位正負位,1表示負,0表示正。
    3、原碼:一個數的二進位制表示。
             3的原碼00000011   -3的 原碼 10000011
    4、反碼:負數原碼按位取反(符號位不變)。正數原碼本身。
            3的反碼00000011   -3的反碼11111100
    5、補碼:正數是原碼本身。負數反碼加1。
             3的補碼是00000011  -3的補碼是11111101

已知負數的補碼,求負數:
補碼-1=反碼,反碼按位取反=該負數絕對值
已知負數,求負數的補碼:
1、負數原碼除了符號位,按位取反(不含符號位),加1。
2、負數絕對值的補碼(也就是原碼),按位取反(含符號位),加1
java int 128轉為byte,值:

128為正數,補碼為10000000(前面24個0省略),變成byte,只剩下10000000(byte為1個位元組),因為開頭是1,所以為負數。即1個負數的補碼是10000000。反碼是01111111,原碼是1000000。是128.因為是負數,所以是-128。

相關推薦

int byte強制型別轉換

int佔4個位元組,32位 byte佔1個位元組,8位 所以強轉時會截斷前24位 在記憶體中表示形式( 注意java中是以補碼錶示一個數,所以表示形式是補碼,不是原碼! ): int a = 3; 00000000 000000

int型別byte型別強制型別轉換

OKevin GitBook:《探尋Java中的設計模式》 Mail:[email protected] 部落格園 首頁 新隨筆 聯絡 訂閱 管理 隨筆 - 130  文章 - 0  評論 - 83

java intbyte型別轉換的2種方法

int是四位元組,32位數。byte是一位元組,8位數。在日常的格式轉換中,我們只需要將byte型別資料前加括號加(int)即可轉換成int型別資料。但是最近接觸到一種全新的轉換方法,雖然得到的結果是相同的,但在某些特殊情況時會用到。 第一種方法(普通):

java中的強制型別轉換 int轉為byte

Java中的基本型別 java中所有的基本數值型別都有正負號,所以不要去尋找無符號的數值型別。 基本型別 大小 最小值 最大值 包裝器型別 boolea

自動型別轉換強制型別轉換

      java基本資料型別之間存在自動型別轉換與強制型別轉換兩種轉換方法。       型別從低到高:byte->char->short->int->long->float->double,如果

一道int和unsigned char之間強制型別轉換的題目

設有語句: ``` int a=258,b; unsigned char c; b=c=a; ``` 則b的值為___。 (答案:2)   (一)int 型別和char型別之間強制型別轉換的規則   ```將int型別變數i的值賦給char型別變數c,會將i的值當作一

java中intbyte相互轉換

基礎內容簡介      在做轉換之前先要明確幾個簡單的概念。首先本文是以java為語言,以int為例子。 long資料型別在原理上是一致的。      1  int 在java中是32位, byte是8位。      2  原碼,反碼,補碼簡介        

下面中???該如何填寫,才可以正確執行強制型別轉換int (*monthp)[31]; monthp = (???)malloc(31);

例子:下面中???該如何填寫,才可以正確執行強制型別轉換?   int (*monthp)[31]; monthp = (???)malloc(31); 在這裡int (*monthp)[31];是一個套,代表定義一個指向有31個整型數的陣列的指標,我們如果把這個陣列看成

強制型別轉換(int)、(int&)和(int*)的區別

(int)x 強制型別轉換,是將浮點數x為引數構造整數(即float轉換為int) (int &)y 則是告訴編譯器將y看成int對待(記憶體裡的資料不做任何轉換),所以(int &)x值為1071 644 672。 至於(int*)的話,我就不多說啦,就是

python中的輸入輸出,以及強制型別轉換函式

我們用得一直是輸出函式:“print” 現在我們來自己輸入一些東西,也就是讓計算機知道從使用者那裡取得資訊的命令輸入“input”   eg1:取得輸入 username = input("請輸入你的姓名:") #獲得你輸入你字元 print(username)

C語言中int到float的強制型別轉換

最近在看一本名為的書。由於我所看過的計算機理論方面的書較少,加上自己大學期間一直也不用功,所以對於計算機的工作原理以及程式的工作方式我始終只知甚少,印象也十分模糊。 不過,應該說我碰到了一本好書。至少,通過昨晚對浮點數一章的閱讀(呃...我的確之前對浮點數從沒弄明白過),

java中intbyte,以及longbyte之間的轉換

轉載請註明出處! 做專案時候根據協議在傳送網路流的時候需要將所有int及long轉換成byte,因此寫了以下的轉換方法,希望能幫助到需要的朋友 ^_^ 閒話少說,直接上碼。 public cla

Python做int()強制型別轉換的時候,小數是如何取捨的?

白月黑羽今天給大家分享一個冷知識:) int()強制型別轉換小數是如何取捨的? 使用 int() 將小數轉換為整數,小數取整會採用比較暴力的截斷方式,即小數點後面的會被強制捨去,向下取整。 例如:5.5向上取整為6,向下取整為5,int(5.5) 結果為5,不會為6 小技巧 如果想要讓其按照人類的思

有符號數無符號數的強制型別轉換問題

在C語言中有符號數轉化為無符號會出現一些問題,先看以下的程式例子: int main() { char ch[12] = {0xF0, 0xFF, 0xFF, 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00};

C#/.NET整數的三種強制型別轉換int)、Convert.ToInt32()、int.Parse()的區別總結

1.(int) 適合簡單資料型別之間的轉換,C#的預設整型是int32(不支援bool型)。 2. int.Parse(string sParameter) 是個建構函式,引數型別只支援string型別,Parse就是把String型別轉換成int,char,doubl

Java的強制型別轉換隱式型別轉換

一.隱式型別轉換 1.Java中的8大基本資料型別 java基本資料型別就8種,除了這些都是引用型的了。 java四類八種基本資料型別: 第一類:整型 byte short int long

java自動型別轉換強制型別轉換

自動型別轉換就是自發的進行,你可以從輸出的結果看出,外表是看不出來的。我們知道資料型別有很多種,大小也不一樣,就像水桶似的,有1升的,2升的,4升的,自動型別轉換就相當於把小的水桶裡面的水裝到大的裡面去。比如   int a = 10;   double b = a;   

instanceof運算子引用變數的強制型別轉換

一、instanceof運算子 instanceof是Java語言中的一個二元運算子,它的作用是判斷一個引用型別的變數所指向的物件是否是一個類(或介面、抽象類、父類)的例項,即它左邊的物件是否是它右邊的類的例項該運算子返回boolean型別的資料。 常見的用法為:result=object inst

編碼和解碼(字符串byte[]之間的轉換)

sys 美國 程序 是我 col urn 密碼 url 簡單的 資源來自互聯網http://www.cnblogs.com/dabaopku/archive/2012/02/27/2370446.html 非常蛋疼的事情, google 和 baidu 在編碼是分別采用

C#實現Streambyte[]之間的轉換實例教程

inpu more family get this splay 登錄 line mem 本文以實例形式詳細介紹了C#實現Stream與byte[]之間的轉換的方法,分享給大家供大家參考之用。具體方法如下: 一、二進制轉換成圖片 MemoryStream ms = new