由於SE 7 Java允許將值指定爲二進制文字。該文件告訴我'字節'是一種可以容納8位信息的類型,值爲-128到127.Java二進制文字 - 字節值-128
現在我不知道爲什麼,但我不能定義8位,但只有7,如果我試圖分配二進制文字在Java字節如下:
byte b = 0b000_0000; //solves to the value 0
byte b1 = 0b000_0001; //solves to the value 1
byte b3 = 0b000_0010; //solves to the value 2
byte b4 = 0b000_0011; //solves to the value 3
依此類推,直到我們獲得了最後幾possibilitys使用這7位:
byte b5 = 0b011_1111; //solves to the value 63
byte b6 = 0b111_1111; //solves to the value 127
如果我想使它負數我必須如此加入前導:
byte b7 = -0b111_1111; //solves to the value -127
現在我遇到的一半問題是我只用7位來描述他們告訴我的是8位數據類型。下半部分是它們似乎不會被用作二進制補碼,除非使用32位int類型,我可以定義所有的32位(包括「符號指示符位」)。
現在,當我搜索如何顯示在範圍內的號碼-128有人告訴我這樣做沒有任何進一步解釋這樣的:
byte b8 = 0b1111_1111_1111_1111_1111_1111_1000_0000;
我可以清楚地看到,在過去的8位(1000 0000)做代表三三兩兩-128 compelment使用8位,還是我從來沒有感到困惑更多,試着問我的問題:
- 心不是上述32位長NR 32位(基於Java)int值?
- 爲什麼我可以將32位值分配給8位(java-)字節類型?
或者一般情況下:爲什麼我必須這樣分配它?
任何有關此鏈接/信息將是偉大的! 感謝您提前閱讀本文以及提供更多信息。
問候 月
確實'byte b8 = 0b1000_0000'工作,也查了2的補碼二進制表示 –
沒有字節b8 = 0b1000_0000不能工作,不幸的是我失去了對這個問題的科學關注,但我認爲這樣可能不起作用。 然而有趣的是,從來沒有在這個問題上一個完整的答案,需要檢查如何設置就可以了獎勵。 – JBA