導航:首頁 > 編程語言 > javabyte與運算

javabyte與運算

發布時間:2024-04-16 20:50:19

A. java中byte的加法

byte的范圍是-128到127,超出了的部分到下一個循環里
b3比上限超出了29,所以最終是-100
PS,127+1在byte里會變成-128,所以不是直接用-128+29,而是-128+28,因為原來的數字加上1才能到-128

B. JAVA 位運算 (byte) (a << 2); 是什麼意思

您好,你的問題,我之前好像也遇到過,以下是我原來的解決思路和方法,希望能幫助到你,若有錯誤,還望見諒!展開全部
你看下這篇文章就清楚了

首先要明白一點,這裡面所有的操作都是針對存儲在計算機中中二進制的操作,那麼就要知道,正數在計算機中是用二進製表示的,負數在計算機中使用補碼表示的。

左移位:<<,有符號的移位操作
左移操作時將運算數的二進制碼整體左移指定位數,左移之後的空位用0補充

右移位:>>,有符號的移位操作
右移操作是將運算數的二進制碼整體右移指定位數,右移之後的空位用符號位補充,如果是正數用0補充,負數用1補充。

例子:

public static void main(String[] args)
{

System.out.println(3<<2);//3左移2位
System.out.println(-3<<2);//-3左移2位

System.out.println(6>>2);//6右移2位
System.out.println(-6>>2);//-6右移2位

}

輸出結果

12
-12
1
-2
下面解釋一下:

00000000 00000000 00000000 00000011 +3在計算機中表示
00000000 00000000 00000000 0000001100 左移2位,補0,結果為12

----------------------------------------------------------------------------------------------

00000000 00000000 00000000 00000011 +3在計算機中表示
11111111 11111111 11111111 11111100
11111111 11111111 11111111 11111101 -3在計算機中表示
11111111 11111111 11111111 1111110100 左移2位,補0,結果為負數,就是補碼了,求原碼
10000000 00000000 00000000 00001011
10000000 00000000 00000000 00001100 結果-12
----------------------------------------------------------------------------------------------

這也說明了一個問題:在計算機中,以1開頭的就是補碼的形式,是負數。

00000000 00000000 00000000 00000110 +6在計算機中表示方法
0000000000 00000000 00000000 00000110 右移兩位,正數補0,結果為1
----------------------------------------------------------------------------------------------

00000000 00000000 00000000 00000110 +6在計算機中表示方法
11111111 11111111 11111111 11111001
11111111 11111111 11111111 11111010 -6在計算機中的表示
1111111111 11111111 11111111 11111010 右移兩位,結果為負數
1000000000 00000000 00000000 000001
1000000000 00000000 00000000 000010 結果為-2
這個地方很容易弄混,多想幾次就會慢慢理解了。

上面解釋了帶符號的移位操作,下面解釋一下不帶符號的移位操作

無符號的移位只有右移,沒有左移使用「>>>」進行移位,都補充0

例如:
public static void main(String[] args)
{
System.out.println(6>>>2);
System.out.println(-6>>>2);

}
結果:

1
1073741822

分析:

00000000 00000000 00000000 00000110 +6在計算機中表示方法
0000000000 00000000 00000000 00000110 右移兩位,正數補0,結果為1
-----------------------------------------------------------------------------------------------------

00000000 00000000 00000000 00000110 +6在計算機中表示方法
11111111 11111111 11111111 11111001
11111111 11111111 11111111 11111010 -6在計算機中的表示
0011111111 11111111 11111111 11111010 右移兩位,補充0,結果為1073741822

以下來自:

可以參考

移位操作要注意的問題是高(低)位是補0還是補1和對char, byte, short型的操作:
(1)<< : (left-shift), 最低位補0
(2)>> : (signed right-shift), 右移過程使用符號位擴展(sign extension),即如果符號為為1則高位補1, 是0則補0,也就是邏輯右移
(3)>>> : (unsigned right-shit),右移過程使用零擴展(zero extension),即最高位一律補0,也就是算術右移
(4)移位操作的數據類型可以是byte, char, short, int, long型,但是對byte, char, short進行操作時會先把它們變成一個int型,最後得到一個int型的結果,對long型操作時得到一個long型結果,不可以對boolean型進行操作。
(5)移位操作符可以和=合並起來,即 <<= 、 >>= 和 >>>=。例如 a >>= 2; 表示將a右移兩位後的值重新賦給a。當時在使用這三個操作符對 byte, char, short型數據進行操作時要注意,例如有一下代碼片段:非常感謝您的耐心觀看,如有幫助請採納,祝生活愉快!謝謝!

C. JAVA中byte類型的介紹。 謝謝

1、在Java中,byte類型的數據是8位帶符號的二進制數。最高位表示正負,0為正,1為負。

2、java byte是做為最小的數字來處理的,因此它的值域被定義為-128~127,也就是signed byte。

3、正數的最高位都是 0 ,正數的值就是二進製表示的值。

4、負數的最高位都是 1 ,負數的值是 取反後加一 然後加個負號得到的值。

(3)javabyte與運算擴展閱讀

1、java基本數據類型

JAVA中一共有八種基本數據類型,分別是byte、short、int、long、float、double、char、boolean。

2、java各數據類型取值范圍

byte,整型,1個位元組,范圍:-2的7次方 ~ 2的7次方-1;

short,整型,2個位元組,范圍:-2的15次方 ~ 2的15次方-1;

int,整型,4個位元組,范圍:-2的31次方 ~ 2的31次方-1;

long,整型,8個位元組,范圍:-2的63次方 ~ 2的63次方-1;

float,浮點型,4個位元組,范圍:3.402823e+38 ~ 1.401298e-45;

double,浮點型,8個位元組,范圍:1.797693e+308~ 4.9000000e-324;

char,文本型,2個位元組,范圍:0~2的16次方-1;

boolean,布爾型,1個位元組,范圍:true/false;

參考資料

網路-java字元型

D. java中byte的加減

首先計算機將127轉換成二進制形式即1111111
byte的范圍是-128---127之間
b+1 結果是10000000 剛好是128
二進制的運算.這就是原理

E. java(byte)>>>時怎麼運算的

0xa2是142, 已經超過了 byte 的存儲空間(-128~+127),會溢出,得到了一個未知的數.
>>>是無符號右移,對於正數相當於除以了4(2^2).

F. java中byte的問題

0xFF == 二進制的:1111 1111
& 是按位與運算,任何一個byte & 0xFF都得原有的數,它主要應用於int等,可以參照這個:http://..com/question/2055765535243071187
所以你上面的例子中的兩個&0xFF是廢代碼

第一個函數原本的意思應該為了截取最後一個位元組。但是因為傳遞的不是int而是byte導致變得是byte強制類型轉換為int,是個失敗的設計,因為只要強制轉換為byte就能達到相同效果了。多此一舉

第二個函數是為了取得一個數對應的十六進制字元串,不過也跟上面的一樣,因為傳遞的是byte,導致整個設計也是失敗的。

G. JAVA中byte類型的介紹。 謝謝

Java也提供了一個byte數據類型,並且是基本類型。java byte是做為最小的數字來處理的,因此它的值域被定義為-128~127,也就是signed byte。

byte,即位元組,由8位的二進制組成。在Java中,byte類型的數據是8位帶符號的二進制數。

在計算機中,8位帶符號二進制數的取值范圍是[-128, 127],所以在Java中,byte類型的取值范圍也是[-128, 127]。

運算規則:

####正數的最高位都是 0 ,正數的值就是二進製表示的值。 ####

####負數的最高位都是 1 ,負數的值是 取反後加一 然後加個負號得到得值。 ####

用8位的二進制來說明此規則:

比如:00000001。最高位是0 為正數 ,那麼表示的就是 十進制的 1。

再比如:10000001.最高位是1 為負數,值是多少?取反得到 01111110 加1 得到 01111111 ,那麼值為 -127

理解此運算規則我們正式開始說byte,byte正好是8位的二進制數。short是16位 int是32位 long是64位。

上述代碼,最後會輸出-56。原因如下:

200的二進製表示是111001000,由於int是32位的二進制,所以在計算機中,實際上是00000000000??111001000,當int轉成byte的時候,那麼計算機會只保留最後8位,即11001000。

然後11001000的最高位是1,那麼表示是一個負數,而負數在計算機中都是以補碼的形式保存的,所以我們計算11001000的原碼為00111000,即56,所以11001000表示的是-56,所以最後test的值為-56。

(7)javabyte與運算擴展閱讀

Java編譯程序生成位元組碼(byte-code),而不是通常的機器碼。Java位元組碼提供對體系結構中性的目標文件格式,代碼設計成可有效地傳送程序到多個平台。Java程序可以在任何實現了Java解釋程序和運行系統(run-time system)的系統上運行。

在一個解釋性的環境中,程序開發的標准「鏈接」階段大大消失了。如果說Java還有一個鏈接階段,它只是把新類裝進環境的過程,它是增量式的、輕量級的過程。

因此,Java支持快速原型和容易試驗,它將導致快速程序開發。這是一個與傳統的、耗時的「編譯、鏈接和測試」形成鮮明對比的精巧的開發過程。

閱讀全文

與javabyte與運算相關的資料

熱點內容
想要認識更多的汽車用什麼app 瀏覽:102
伺服器初始界面卡在13怎麼回事 瀏覽:301
泰國免費電影大全國語 瀏覽:240
走不出的別墅區電影 瀏覽:622
觀音寺招程序員 瀏覽:641
解壓挖掘機小游戲抖音 瀏覽:575
伺服器更新維護尚未完成什麼意思 瀏覽:661
情歌戀曲 電影 瀏覽:264
法國高分電影有哪些預言者 瀏覽:968
命令怎麼學 瀏覽:818
李采譚的影片 瀏覽:679
吃屎的電影叫什麼頭像惡心 瀏覽:790
《新媽媽的目的》演員表 瀏覽:189
何家駒電影大全 瀏覽:941
雷軍的編程代碼 瀏覽:452
怎麼把wps轉換為pdf格式的文件 瀏覽:55
天津網關伺服器雲空間 瀏覽:689
韓國電影交換的的一天BH的女演員 瀏覽:552
腐劇網耽美電影 瀏覽:910
台灣絕版電影一箭雙雕 瀏覽:883