Rumah  >  Artikel  >  Berapa banyak bait yang diduduki oleh jenis char?

Berapa banyak bait yang diduduki oleh jenis char?

青灯夜游
青灯夜游asal
2023-03-10 15:54:2136070semak imbas

Jenis char menduduki 1 bait dalam C atau C++ dan 2 bait dalam Java. char digunakan dalam C atau C++ untuk mentakrifkan pembolehubah aksara, dan jenis data char ialah jenis integer dan hanya menduduki 1 bait. Di Java, jenis char menduduki 2 bait kerana pengkompil Java menggunakan pengekodan Unicode secara lalai, jadi 2 bait (16 bit) boleh mewakili semua aksara.

Berapa banyak bait yang diduduki oleh jenis char?

Persekitaran pengendalian tutorial ini: sistem Windows 7, komputer Dell G3.

Saya mencari di Baidu untuk "berapa bait yang diduduki char" dan mendapat jawapan berikut:

Berapa banyak bait yang diduduki oleh jenis char?

char digunakan untuk Pembolehubah aksara yang ditakrifkan dalam C atau C++ ialah jenis integer, hanya menduduki satu bait, dan julat nilai ialah -128 ~ +127 (-27 ~ 27-1).

Jenis char menduduki 1 bait, iaitu 8 bit Integer positif yang boleh disimpan ialah 0111 1111, iaitu 127.

Jelas sekali ini bukan hasil yang kami mahukan, jadi saya terus mencari "berapa banyak bait yang diduduki char dalam java"

Berapa banyak bait yang diduduki oleh jenis char?

Jenis data aksara dalam Java digunakan untuk menyimpan aksara Ia menduduki 2 bait dan menggunakan pengekodan unikod 128 bait pertamanya serasi dengan ASCII, tetapi sesetengah aksara memerlukan dua aksara untuk mewakilinya.

Mengapa char menduduki bilangan bait yang sama dalam C atau C++ dan java?

Apakah maksud sesetengah aksara memerlukan dua aksara untuk diwakili?

Pengekodan

Sebelum membincangkan isu ini, mari kita mempopularkan dahulu beberapa perkara pengetahuan.

Pertama sekali, kita semua tahu bahawa maklumat yang disimpan dalam komputer diwakili oleh nombor binari, jadi bagaimanakah kita membiarkan komputer menyimpan aksara Cina atau bahasa Inggeris yang kita manusia gunakan?

Contohnya, cara menukar 'a' kepada binari dan menyimpannya dalam komputer dipanggil pengekodan; dan menganalisis serta memaparkan nombor binari yang disimpan dalam komputer dipanggil Decode

untuk

.

Set aksaraWatak ialah istilah umum untuk pelbagai teks dan simbol, termasuk teks kebangsaan, tanda baca, simbol grafik, Nombor dsb. Set aksara (Set aksara) ialah koleksi berbilang aksara Terdapat banyak jenis set aksara, dan setiap set aksara mengandungi bilangan aksara yang berbeza Nama set aksara biasa: Set aksara ASCII, set aksara GB2312, set aksara BIG5, GB18030. set aksara , set aksara Unicode, dsb. Ini adalah penjelasan yang diberikan oleh Baidu Encyclopedia, set watak ialah himpunan watak Terdapat banyak jenis set watak, dan bilangan watak dalam set watak juga berbeza. Untuk membolehkan komputer memproses teks dengan tepat dalam pelbagai set aksara, pengekodan aksara diperlukan supaya komputer dapat mengecam dan menyimpan pelbagai teks.

unicode

Namanya ialah Unicode, juga dipanggil Kod Universal Bilangan simbol sentiasa meningkat dan telah melebihi satu juta.

Sebelum Unicode dicipta, terdapat ratusan sistem pengekodan. Tiada pengekodan boleh mengandungi aksara yang mencukupi Seperti yang dapat dilihat dari namanya, ia adalah pengekodan semua simbol Setiap simbol diberi pengekodan yang unik, jadi aksara bercelaru yang disebabkan oleh pengekodan yang berbeza akan hilang.

Kebanyakan komputer menggunakan ASCII (American Standard Code for Information Interchange), iaitu skema pengekodan 7-bit yang mewakili semua huruf besar dan kecil, nombor, tanda baca dan aksara kawalan. Unicode mengandungi kod ASCII dan 'u0000' hingga 'u007F' sepadan dengan semua 128 aksara ACSII.

Saya tidak dapat menahan perasaan bahawa hanya mereka yang mempunyai kekuatan boleh menetapkan piawaian. Unicode hanyalah set simbol Ia hanya menentukan kod binari simbol Ia hanya menyediakan pemetaan antara aksara dan nombor, tetapi tidak menyatakan cara kod binari ini harus disimpan. Kami tahu bahawa bilangan huruf Inggeris adalah sangat kecil dan boleh diwakili oleh satu bait, tetapi bilangan simbol Cina dalam Unicode adalah sangat besar, dan satu bait tidak boleh digunakan sama sekali. Akibatnya, pelbagai kaedah pelaksanaan untuk penyimpanan aksara unikod muncul kemudian, seperti UTF-8, UTF-16, dsb. UTF-8 ialah pelaksanaan Unicode yang paling banyak digunakan di Internet.

Kod dalam dan kod luar

Kami sering mengatakan bahawa char dalam java menduduki beberapa bait, yang sepatutnya menjadi char dalam kod dalam dalam java.

Kod dalaman merujuk kepada kaedah pengekodan aksara dan rentetan dalam ingatan semasa Java sedang dijalankan ialah pengekodan aksara yang digunakan secara luaran apabila program berinteraksi dengan dunia luar, seperti teknologi bersiri. Kod asing boleh difahami sebagai: selagi ia bukan kod dalaman, ia adalah kod asing. Perlu diingatkan bahawa kaedah pengekodan dalam fail kod objek (fail boleh laku atau fail kelas) yang dijana oleh penyusunan kod sumber adalah milik kod asing. Kod dalaman dalam JVM menggunakan UTF16. 16 dalam UTF-16 merujuk kepada unit minimum 16 bit, iaitu, dua bait adalah satu unit. Pada hari-hari awal, UTF16 telah dikodkan menggunakan kaedah 2-bait panjang tetap Dua bait boleh mewakili 65536 simbol (sebenarnya, ia sebenarnya boleh mewakili kurang daripada ini), yang cukup untuk mewakili semua aksara dalam Unicode pada masa itu. Walau bagaimanapun, dengan peningkatan aksara dalam Unicode, 2 bait tidak boleh mewakili semua aksara UTF16 menggunakan 2 bait atau 4 bait untuk melengkapkan pengekodan. Untuk menangani situasi ini, Java menggunakan sepasang aksara untuk mewakili aksara yang memerlukan 4 bait, dengan mengambil kira keperluan keserasian hadapan. Oleh itu, char dalam Java mengambil dua bait, tetapi sesetengah aksara memerlukan dua aksara untuk mewakilinya. Ini menerangkan sebab sesetengah aksara memerlukan dua aksara untuk mewakilinya.

Selain itu: Fail kelas Java menggunakan UTF8 untuk menyimpan aksara, iaitu, aksara dalam kelas menduduki 1 hingga 6 bait. Semasa siri Java, aksara juga dikodkan dalam UTF8, merangkumi 1 hingga 6 aksara.

length()

Kemudian inilah soalan lain: Apakah String.length() bagi aksara dalam Java?

Selepas membaca mata pengetahuan sebelumnya, anda tidak boleh membuka mulut dan hanya menjawab 1... Tulis demo dan lihat: Pada Tahun Harimau, gunakan harimau untuk menguji, tigerUTF mewakili pengekodan unikod yang sepadan.

         String tiger = "?";
         String tigerUTF = "\uD83D\uDC05";
         System.out.println(tigerUTF);
         System.out.println(tiger.length()); 
         System.out.println(tiger.codePointCount(0,tiger.length()));

Berapa banyak bait yang diduduki oleh jenis char?

Dapat disimpulkan bahawa hasil panggilan String.length() ialah 2, yang bermaksud tatasusunan aksara rentetan menduduki 2 kod dalam UTF-16 unit format (iaitu 4 bait), bukan berapa banyak aksara yang ada. Sudah tentu, kita boleh menggunakan kaedah codePointCount untuk mendapatkan berapa banyak aksara yang kita mahu dapatkan.

Untuk lebih banyak pengetahuan berkaitan, sila lawati ruangan Soalan Lazim!

Atas ialah kandungan terperinci Berapa banyak bait yang diduduki oleh jenis char?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Apakah maksud rangkaian sibuk?Artikel seterusnya:Apakah maksud rangkaian sibuk?