JavaRush /Blog Jawa /Random-JV /Jawa: bit lan bita
Viacheslav
tingkat

Jawa: bit lan bita

Diterbitake ing grup
Jawa: bit lan bita - 1

Pambuka

Yen wong ngetung ing sistem angka desimal, banjur komputer ngetung ing sistem biner. Lan programer kudu ngerti carane ngomong karo wong lan komputer. Tinjauan iki kudu mbantu ing perkara iki. Kadhangkala ana jagad kabeh sing didhelikake ing mburi sing jelas. Aku propose kanggo pirembagan bab donya iki. Contone, ana 7 dina ing seminggu. Saiki, ayo mangsuli pitakon: Apa nomer "7"? ) Kaping pisanan, iku nomer alami integer (positif). Iku uga nomer desimal. Angka desimal minangka angka ing Sistem Desimal. Yen kita ngomong "sistem angka desimal", tegese sistem nomer duwe basis 10 . Radix nuduhake carane akeh digit bisa digunakake ing sistem nomer tartamtu kanggo makili nomer. Countdown saka nol. Patut, kanggo makili nomer ing sistem nomer desimal, kita nggunakake nomer saka 0 kanggo 9. Iki apik, nanging kita kudu count ora mung kanggo 9, nanging uga ngluwihi. Carane dadi? Contone, nomer 10. Kanggo nulis nomer iki, kita nggunakake minangka akeh minangka 2 digit. Posisi saben digit ing sistem desimal diarani panggonan desimal. Angka kasebut diitung saka tengen ngiwa:
Jawa: bit lan bita - 2
Kajaba iku, angka desimal bisa ditambahake kaya ing ngisor iki: 103 = 1*10^2 + 0*10^1 + 3*10^0
Jawa: bit lan bita - 3
Jumlah kasebut pancen tuwuh saka tengen ngiwa. Yaiku, wiwitane ana 7, banjur dadi 10. Mulane, angka kasebut diitung saka sisih tengen, wiwit saka nol. Apa kabeh iki kanggo? Iki amarga kita dudu komputer. Lan nalika kita ngetung ing desimal (yaiku basis 10), komputer ngetung ing binar (yaiku, basis 2). Nanging aturan sing ditrapake ing sistem nomer iki padha.
Jawa: bit lan bita - 4

Sistem binar

Sistem binar meh padha karo sistem desimal, mung bedane yaiku watesan ing kene ora 10, nanging 2. Coba dibandhingake karo conto. Kepiye carane makili 11 ing binar? Iku banget prasaja: sampeyan mung kudu dibagi nomer desimal dening basis 2, sing, count 11/2 ing kolom. Tuladha:
Jawa: bit lan bita - 5
Utawa iki conto saka WikiHow:
Jawa: bit lan bita - 6
Sing nggumunake, kita bisa makili nomer ing biner kanthi cara sing padha karo desimal: 111 ing biner = 1*2^2 + 1*2^1 + 1*2^0 = 4 + 2 + 1
Jawa: bit lan bita - 7
Conto konversi saka binar menyang desimal bisa dideleng ing kalkulator online . Ngomong babagan kasunyatan manawa aturan operasi ing sistem nomer padha, ayo goleki tambahan ing sistem binar:
Jawa: bit lan bita - 8
Nalika sampeyan bisa ndeleng, kita nransfer digit sak tambahan ing cara sing padha ing sistem desimal. Analisis tambahan bisa dideleng, contone, ing kene: Miturut cara, sawetara tembung "discharge" periodik kasebut. Lan apa iku? Panggonan mung minangka "unsur struktural" sing makili nomer. Sing, nomer 10 kasusun saka rong digit: kita kudu 2 digit, 2 panggonan, 2 unsur kanggo nulis nomer iki. Penting kanggo kita ngerti iki amarga ing sistem angka biner, digit rada . Tembung Bit asalé saka basa Inggris "digit biner" , yaiku, angka biner. Bisa uga 0 utawa 1. Nanging kaya kita maca angka lan tembung sakabèhé, lan dudu huruf kanthi huruf, komputer ora maca siji-sijine. Kanggo minimal "potongan" informasi sing diproses ing RAM (sing diarani unit informasi alamat paling cilik), diwaca urutan 8 bit . Amarga ana 8, iki diarani "oktet". Lan uga - tembung sing luwih kondhang Byte . Kanggo ngelingi octet, sampeyan bisa ngelingi yen tembung gurita (wolung sikil) diterjemahake ing basa Inggris dadi gurita. Tegese, iki persis "octo" sing padha ing judhul:
Jawa: bit lan bita - 9
Ayo dipikirake apa jumlah maksimal sing bisa diwakili minangka 8 bit?
Jawa: bit lan bita - 10
Lan ing kene ana pitakonan: kepiye angka negatif? Kanggo mangerteni iki, ayo ngomong babagan carane bait diwakili ing Jawa
Jawa: bit lan bita - 11

Jawa lan Byte

Kepiye carane bisa nggunakake angka negatif ing Jawa? Iku rampung prasaja. Ing Jawa, bita ditandatangani. Digit/bit paling kiwa (uga disebut "bit paling signifikan") digawe minangka "penanda" sing mangsuli pitakon: "Apa nomer iki negatif?" Yen jawabane ya, panandha kasebut nduweni nilai 1. Yen ora, 0. Coba conto carane ngowahi angka 5 dadi angka negatif 5:
Jawa: bit lan bita - 12
Adhedhasar gambar iki, sampeyan bisa ngerti watesan ing ngendi Nilai Byte dumunung:
Jawa: bit lan bita - 13
Iku uga cetha yen:
  • yen kita nambah siji kanggo 127, kita njaluk -128.
  • Yen dikurangi siji saka -128, entuk 127.
Mangkono, Byte ing Jawa bisa njupuk nilai saka -128 kanggo 127. Kita elinga, byte iku sawijining oktet. Lan digit maksimum / dicokot paling pinunjul wis nomer serial 7, awit kita count saka nul. Ing kasus iki, iku gampang kanggo elinga yen bait padha karo -2 daya 7 (wates ngisor) kanggo 2 kanggo daya 7 minus 1 (wates ndhuwur). Nggarap jinis data dhewe iku prasaja. Kita nggunakake compiler Jawa online "repl.it" minangka "kotak wedhi" kanggo artikel iki. https://repl.it/languages/java. Contone, ayo mbukak kode sing bakal makili variabel byte ing wangun binar minangka string:
class Main {
  public static void main(String[] args) {
    byte octet = 5;
    String bin = String.format("%8s", Integer.toBinaryString(octet)).replace(' ', '0');
    System.out.println(bin);
  }
}
Nggarap bita aktif digunakake nalika nggarap I/O Streams. Sampeyan bisa maca liyane ing tutorial saka Oracle: " I/O Streams ". Kajaba iku, ing Jawa sampeyan bisa nggunakake literal khusus kanggo nemtokake nilai minangka bit:
class Main {
  public static void main(String[] args) {
    byte data = 0b101;
    System.out.println(data);
  }
}
Jawa: bit lan bita - 14

Manipulasi Bit

Nutul ing bita lan bit, siji ora bisa gagal kanggo sebutno macem-macem manipulasi bit. Mbokmenawa operasi sing paling umum yaiku shift (shift bitwise utawa bit-shift). Lan kabeh amarga asile duwe manfaat praktis sing jelas. Apa gunane? Ngalih ngiwa dening N posisi padha karo multiply nomer dening 2N. Lan owah-owahan ing sisih tengen padha karo divisi sing padha.Mangkono, 5<<2 == 5*Math.pow(2,2) Lan kanggo ngerti sebabe kaya ngono, ayo deleng conto iki kanthi luwih rinci:
Jawa: bit lan bita - 15
Negasi bitwise NOT (Unary bitwise), sing diwakili dening tilde, ngowahi bit. Iki ditulis minangka tilde, contone ~5.
public static void main(String[] args) {
	System.out.println(~5); //-6
 	System.out.println(~-5);//4
}
Iki maneh nuduhake yen nalika Jawa ngganti tandha nomer, saliyane ngowahi nilai bit ing pungkasan, kita nindakake +1. Lan tanpa iki, kaya sing kita deleng, nomer 5 kita ganti. Lan supaya tetep nomer padha sadurunge ngganti tandha, sampeyan kudu nindakake +1. Bitwise AND ngidini sampeyan ninggalake rong angka sing beda karo nilai 1 mung yen kabeh bit duwe nilai siji. Apa sing menarik babagan iki bisa uga ana sawetara keuntungan aplikasi:
int x=4;
System.out.println((x&1) != 1);
Kode iki mriksa nomer x kanggo paritas. Ayo ndeleng conto:
Jawa: bit lan bita - 16
Kanthi nggunakake Bitwise AND lan Bitwise OR bebarengan, sampeyan bisa nggunakake topeng:
public static void main(String[] args) {
    byte optionA=0b0100;
    byte optionB=0b0010;
    byte optionC=0b0001;
    byte value = (byte)(optionB | optionC);
    // Check for optionB
    if ((optionC & value) != 0b0000) {
      System.out.println("Yes");
    } else {
      System.out.println("No");
    }
  }
Deleng " Pilihan masking karo operator bitwise ing Jawa " kanggo rincian liyane . Manipulasi bit minangka topik sing menarik ing ngendi review, artikel lan buku sing kapisah wis ditulis. Lan saka kene wiwit dalan dawa menyang kriptografi. Minangka bagéan saka review iki, iku worth ngerti apa iku bisa lan carane. Kanggo informasi luwih lengkap babagan operasi bit, aku nyaranake maca review saka tproger: " Babagan operasi bit ."

Jinis primitif

Dadi, byte minangka oktet, yaiku, 8 bit. Iku gampang kanggo elinga yen ing Jawa uga ana 8 jinis primitif, kebetulan. Jinis primitif yaiku jinis data sing dibangun ing basa pamrograman, yaiku kasedhiya kanthi standar. byte minangka jinis data primitif paling cilik ing babagan jejak memori sing bisa digunakake ing Jawa. Kaya sing wis dingerteni sadurunge, bait njupuk 8 bit. Mulane, angka sing paling penting yaiku nomer 7. Mulane, byte ngemot nilai saka -2 nganti daya 7 nganti 2 nganti daya 7 minus 1 asil. Apa jinis primitif liyane sing ana:
Jawa: bit lan bita - 17
Minangka kita bisa ndeleng saka tabel, jinis data ing syarat-syarat jumlah data dikuwasani pindho. Sing, short = 2 * byte, lan int = 2 * short. Iku bener gampang kanggo elinga. Elinga yen byte = 8 bit. Kasunyatan sing ora bisa kurang uga eling. Ing basa Inggris, integer diarani integer. Jinis primitif saka iku diarani singkatan int. Ana integer biasa - int. Ana versi cendhak, cendhak, lan versi dawa, dawa. Mulane, int manggoni 32 bit (4 bita). Versi cendhak 2 kaping luwih cilik - 16 bit (2 bait), lan versi dawa kaping pindho minangka gedhe, i.e. 64 bit (8 bita). Dadi int paling bisa nyimpen jumlah kira-kira 2 milyar lan satus yuta. Lan dawa bisa nyimpen maksimum watara 9 quadrillion (tembung becik). Ngelingi lelucon lawas babagan carane programmer anyar mikir yen ana 1000 bita ing kilobyte, lan programmer lengkap percaya yen ana 1024 gram ing kilogram, kita bisa ngerti:
1 mb = 1024 Kbyte = 1024 * 1024 = 1048576 bytes
1 int = 4 bytes
1 mb = 262144 int
Miturut cara, sing maca enten bisa uga wis weruh sing ana mung 7 jinis ing gambar. 8 jinis primitif yaiku boolean. boolean minangka jinis data Boolean sing mung nduweni rong nilai: bener lan salah. Nanging pitakonan muncul - apa ukurane? Spesifikasi Java Virtual Machine lan bagean " 2.3.4. The boolean Type " bakal mangsuli kita:
Jawa: bit lan bita - 18
Yaiku, mung boolean bakal njupuk jumlah sing padha karo int. Yen kita ngumumake array saka boolean, banjur saben unsur array bakal manggoni 1 byte. Iki keajaiban :)

Kesimpulan

Aku saranake sampeyan familiarize dhewe karo sawetara bahan liyane kanggo nggabungake: #Viacheslav
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION