課程
/后端開(kāi)發(fā)
/Java
/文件傳輸基礎(chǔ)——Java IO流
請(qǐng)問(wèn)大家,“慕課”兩個(gè)中文字符的每個(gè)字節(jié)為什么有32位?不是每個(gè)字節(jié)8位嗎?
2017-06-16
源自:文件傳輸基礎(chǔ)——Java IO流 1-1
正在回答
因?yàn)槟戕D(zhuǎn)換的結(jié)果是二進(jìn)制,你現(xiàn)在可能已經(jīng)知道了。
1:byte是8字節(jié)
2:int是32字節(jié)
3:toBinaryString()是將內(nèi)容轉(zhuǎn)換成2進(jìn)制
由于2個(gè)字節(jié)組成一個(gè)漢字,而你又是2進(jìn)制的,所以最終結(jié)果就是:
11111111111111111111111111000100 ? 11111111111111111111111110111101
??
? ? ? ? ? ? ? ? ??
? ? ? ? ?
不用 太計(jì)較輸出的內(nèi)容,GBK中一個(gè)漢字就是一個(gè)字節(jié)(8bit),
Integer.toBinaryString(int);函數(shù)是將一個(gè)integer類型整數(shù),轉(zhuǎn)換為無(wú)符號(hào)2進(jìn)制數(shù)。
列子中:慕 轉(zhuǎn)成字節(jié)為:-60 -67
轉(zhuǎn)成java最終能顯示出來(lái)的位數(shù)32高位為0補(bǔ)1(雙字節(jié));
結(jié)果為:11111111111111111111111111000100(其中11000100代表-60)? ? 有符號(hào)的二進(jìn)制取補(bǔ)碼的反碼 ????60
我認(rèn)為是因?yàn)槊總€(gè)字節(jié)占八位 ?這里是16進(jìn)制的 ?也就是八位十六進(jìn)制的數(shù) ? 每個(gè)十六進(jìn)制的數(shù)轉(zhuǎn)換為二進(jìn)制是四位
所以轉(zhuǎn)換為二進(jìn)制就是32位了 ? ?
看一下你的這個(gè)java文件是什么編碼。如果是utf-8的話。漢子占3個(gè)字節(jié)就是32位
慕課這兩個(gè)字轉(zhuǎn)換為字節(jié)后是負(fù)的,負(fù)的byte自動(dòng)轉(zhuǎn)換為int是會(huì)按符號(hào)位擴(kuò)展,正數(shù)的話是0沒(méi)什么影響,負(fù)數(shù)是1,你再按老師說(shuō)的加個(gè)&0xff就會(huì)將前面的置0了,就成8位的了。前面那節(jié)二進(jìn)制我現(xiàn)在都很懵逼。
? 你的輸出函數(shù)里面不一樣 ?System.out.println(Integer.toHexString(b));?
在Java中,如果想要把一個(gè)十進(jìn)制整數(shù)轉(zhuǎn)換為十六進(jìn)制,可以使用Integer.toHexString(int i)方法
關(guān)鍵是漢字根本就是不字節(jié)啊。。。
舉報(bào)
為您介紹IO流的使用,以及對(duì)象的序列化和反序列化的內(nèi)容
1 回答求大神來(lái)解答
2 回答好想問(wèn)問(wèn)老師一個(gè)底層的問(wèn)題
7 回答編碼問(wèn)題求解答
3 回答遍歷結(jié)果并不是如老師所講的,求解答
4 回答關(guān)于read()輸出問(wèn)題,求解答。(自學(xué)黨真痛苦)
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2018-09-12
因?yàn)槟戕D(zhuǎn)換的結(jié)果是二進(jìn)制,你現(xiàn)在可能已經(jīng)知道了。
1:byte是8字節(jié)
2:int是32字節(jié)
3:toBinaryString()是將內(nèi)容轉(zhuǎn)換成2進(jìn)制
由于2個(gè)字節(jié)組成一個(gè)漢字,而你又是2進(jìn)制的,所以最終結(jié)果就是:
11111111111111111111111111000100 ? 11111111111111111111111110111101
??
? ? ? ? ? ? ? ? ??
? ? ? ? ?
2018-02-06
不用 太計(jì)較輸出的內(nèi)容,GBK中一個(gè)漢字就是一個(gè)字節(jié)(8bit),
Integer.toBinaryString(int);函數(shù)是將一個(gè)integer類型整數(shù),轉(zhuǎn)換為無(wú)符號(hào)2進(jìn)制數(shù)。
列子中:慕 轉(zhuǎn)成字節(jié)為:-60 -67
轉(zhuǎn)成java最終能顯示出來(lái)的位數(shù)32高位為0補(bǔ)1(雙字節(jié));
結(jié)果為:11111111111111111111111111000100(其中11000100代表-60)? ? 有符號(hào)的二進(jìn)制取補(bǔ)碼的反碼 ????60
2017-10-21
我認(rèn)為是因?yàn)槊總€(gè)字節(jié)占八位 ?這里是16進(jìn)制的 ?也就是八位十六進(jìn)制的數(shù) ? 每個(gè)十六進(jìn)制的數(shù)轉(zhuǎn)換為二進(jìn)制是四位
所以轉(zhuǎn)換為二進(jìn)制就是32位了 ? ?
2017-07-23
看一下你的這個(gè)java文件是什么編碼。如果是utf-8的話。漢子占3個(gè)字節(jié)就是32位
2017-07-11
慕課這兩個(gè)字轉(zhuǎn)換為字節(jié)后是負(fù)的,負(fù)的byte自動(dòng)轉(zhuǎn)換為int是會(huì)按符號(hào)位擴(kuò)展,正數(shù)的話是0沒(méi)什么影響,負(fù)數(shù)是1,你再按老師說(shuō)的加個(gè)&0xff就會(huì)將前面的置0了,就成8位的了。前面那節(jié)二進(jìn)制我現(xiàn)在都很懵逼。
2017-06-18
? 你的輸出函數(shù)里面不一樣 ?System.out.println(Integer.toHexString(b));?
在Java中,如果想要把一個(gè)十進(jìn)制整數(shù)轉(zhuǎn)換為十六進(jìn)制,可以使用Integer.toHexString(int i)方法
2017-06-17
關(guān)鍵是漢字根本就是不字節(jié)啊。。。