JAVA為什麼沒有無符號左移,JAVA中,為什麼沒有無符號左移運算子?

2021-03-04 05:12:23 字數 2646 閱讀 2510

1樓:匿名使用者

因為左移是在後面補0

而右移是在前面邊補1或0

有無符號是取決於數的前面的第一位是0還是1所以右移是會產生到底補1還是0的問題。

而左移始終是在右邊補,不會產生符號問題。

所以沒有必要無符號左移<<<。

無符號左移《和左移《是一樣的概念

java中,為什麼沒有無符號左移運算子?

2樓:匿名使用者

不是java任何語言都沒有, 位運算中左移跟符號沒有關係的, 因為最高位就是符號位

例如8位的byte中最高位如果是 1那就表示負數 如果是左移一位, 那麼最高位就會丟掉, 最低位補0 1111 1111 << 1 就會變成 1111 1110

3樓:匿名使用者

??? 左移要和符號有關係嗎? 符號位就在最左邊呀。

4樓:晉

有啊,可以參考《java從入門到精通》這書裡面有詳細的講解

求java大神告訴我 java中無符號左移或右移 是怎麼回事呢? 特別是負數是怎麼回事?謝謝了

5樓:匿名使用者

有符號就帶符號、沒符號就補0。

轉成2進製,或者自己用筷子擺幾下,就清楚了。

借個別人寫好的了

右移system.out.println(-3>>1);結果是-2,為什麼會是-2呢?

下面我們來看一下.system.out.

println(integer.tohexstring(-3));得到-3的16進製為fffffffd(此為-3的補碼,計算機中負數用補碼表示).轉換成2進製為

1111 1111 1111 1111 1111 1111 1111 1101

右移一位為

1111 1111 1111 1111 1111 1111 1111 1110

,顯而易見此為-2補碼.

左移system.out.println(-3<<1);左移相對來說比較簡單.

1111 1111 1111 1111 1111 1111 1111 1101左移一位為1111 1111 1111 1111 1111 1111 1111 1010,其為-6的補碼.

無符號右移system.out.println(-3>>>1);1111 1111 1111 1111 1111 1111 1111 1101無符號右移,高位補0,01111 1111 1111 1111 1111 1111 1111 1110,其為2147483646的原碼.

6樓:匿名使用者

改造中的無符號右移的資料是非常重要的。

例如,在位元組b;做無符號右移,並在一些雜湊,加密,壓縮,序列化格式將用於編碼的視聽**。

如果標誌的權利,我們需要更多的空間做符號右移。

如位元組需要喲int做,浪費了時間和空間的短,短的。

所謂的「左乘以4(2 ^ 2),移兩位除以4」最初成立於unsigned環境。這不僅是因為java的無符號的基礎型別,所以你明白簽署。

總之,毫無徵兆地申請的權利遠不止乙個標誌,以正確的。 。

java中無符號右移有什麼意義呢?

7樓:匿名使用者

無符號右移在資料變換時非常重要。

比如對byte b;做無符號右移,在眾多雜湊、加密、壓縮、影音**編碼、序列化格式都會用到。

如果沒有這個無符號右移,就需要用更大的空間去做有符號右移。

比如byte就需喲short,short就需要int去做,浪費空間和時間。

所謂「左移兩位是乘以4(2的2次方),右移兩位是除以4」 原先都是指在無符號環境下成立。只因java沒有無符號的基礎型別,所以你理解成有符號下才是這樣。

總之,無符號右移的應用場合大大多於有符號右移。。

8樓:西南一少

我當初學java也有過類似的疑問,等到以後學jsp的時候,才發現,java基礎裡什麼都有用,只是還沒接觸到而已

9樓:桂安卉勢葉

舉個例子

inta

=7>>1

,就是將7的二進位制(111)向右移動一位,就是(011)就是3,所以int

a=3;

也可看成是除以二,如果左運算元是奇數就看做(a-1)÷2,是偶數就是a÷2

右移位運算就是將左運算元的位元位向右移動第二個運算元指定的位數,在二進位制中,首位是用來表示正負的,若右移運算子的第乙個運算元是正數,就填充0,是負數就填充1;

java 無符號的右移怎麼解釋

10樓:匿名使用者

>>是帶符號右移

>>>才是無符號右移..

帶符號右移就是將那個數轉為2進製然後在前面補0或1如果是正數就補0

負數補1

例如11 >> 2,則是將數字11右移2位計算過程:

11的二進位制形式為:0000 0000 0000 0000 0000 0000 0000 1011,然後把低位的最後兩個數字移出,因為該數字是正數,所以在高位補零。則得到的最終結果是0000 0000 0000 0000 0000 0000 0000 0010。

轉換為十進位制是2。

無符號右移與帶符號右移的區別就是 無符號始終補0

java中這個符號是什麼意思,Java裡的每個符號代表什麼意思

相當於 int paycharge paycharge cardbalance 是賦值語句的一種,相當於paycharge parcharge cardbalance 類似與a b.a b相當於a a b 賦值運算語句 java中這個符號 是什麼意思 a b的意思就是把a和b按位或然後賦值給a 按位...

為什麼會有無症狀病毒攜帶者?他們為什麼沒有發病?

因為病毒也在進化,所以導致感染的人們沒有任何症狀的出現,在潛伏期也就不會有發病的情況。因為他們自身抵抗能力很強,很健康,即使接觸到病毒,自身的免疫能力也會保護他們,但是他們身體外攜帶的病毒,被抵抗能力較弱的接觸,就會發病。因為本身感染的病毒比較輕,潛伏期很長,這些無症狀感染者不發病並不代表不會感染別...

在java中為什麼有些方法後面不加括號而有的就必

你好,不加括號的 應該是變數名吧或者是封裝的型別 interger是基本型別int的封裝類,parseint string str 方法是將括號裡面的字串資料轉化成int型別 integer 類在物件中包裝了乙個基本型別 int 的值 java中只要是加括號的肯定是方法,不帶括號的是變數 你在說詳細...