Rumah  >  Artikel  >  Java  >  Saya diam-diam melihat beberapa asas komputer, dan mulai sekarang belajar Java adalah seperti menipu!

Saya diam-diam melihat beberapa asas komputer, dan mulai sekarang belajar Java adalah seperti menipu!

Java学习指南
Java学习指南ke hadapan
2023-07-26 17:30:051643semak imbas

Sebelum belajar Java, saya ingin bertanya, adakah anda rasa perlu belajar asas komputer?

Ramai orang berpendapat bahawa tidak perlu membaca pengetahuan asas yang membosankan dan kabur itu. Adalah lebih baik untuk bermula secara langsung dari HelloWorld Mula-mula sentuh program, dapatkan kesan, dan kod akan dijalankan, dan kemudian secara beransur-ansur mempelajari sintaks program secara mendalam, dan akhirnya menggunakan program untuk membina projek Itu adalah kaedah pembelajaran praktikal.

Pertama sekali, saya tidak nafikan cara pembelajaran ini memang lebih sesuai untuk sesetengah pelajar, terutama yang bergelumang untuk belajar cara menggunakannya terlebih dahulu memahaminya secara mendalam nanti. Lagipun, tiada yang lebih penting daripada roti?

Tetapi bagi pelajar kami yang mempelajari logaritma dari awal, saya masih mengesyorkan bermula dengan beberapa pengetahuan asas komputer untuk memahami idea dan akal sehat pengaturcaraan, yang juga akan sangat membantu untuk kajian masa depan kami. Macam nak bina rumah ada yang buat rumah jerami, ada yang buat rumah lumpur, ada yang nak buat rumah dua tingkat ala-ala Barat. Kedalaman asas secara langsung menentukan tahap pencapaian masa depan.

Jadi sekarang mari kita fahami secara ringkas beberapa pengetahuan asas komputer.

1. Klasifikasi bahasa mesin

Bahasa mesin

Bahasa mesin ialah bahasa yang boleh dikenali secara langsung oleh komputer Ia adalah bahasa komputer yang dinyatakan secara langsung dalam arahan kod binari. Ia adalah kod yang terdiri daripada rentetan 0s dan 1s, dengan bilangan digit tertentu, dan dibahagikan kepada beberapa segmen Pengekodan setiap segmen mewakili makna yang berbeza. Sebagai contoh, berikut ialah rentetan kod mesin yang mudah:

010100100000  // 520

Ramai yang bertanya, mengapa kod mesin terdiri daripada 0 dan 1?

Oleh kerana kod mesin perlu mengawal perkakasan komputer untuk bertindak balas kepada arahan program, 0 mewakili potensi rendah, 1 mewakili potensi tinggi, supaya litar logik boleh dijana, yang bersamaan dengan mengawal suis ditutup dan 1 terbuka.

Bahasa perhimpunan

Bahasa perhimpunan ialah bahasa untuk pembangun Memandangkan bahasa mesin semuanya 0 dan 1, sukar bagi pembangun untuk mengawal dan menggunakannya secara langsung, jadi beberapa simbol khas perlu digunakan sebagai penanda untuk kod binari. . Pembangun melengkapkan pengeluaran arahan dengan memasukkan simbol khas ini dan membiarkan komputer berfungsi untuk kami. Komputer tidak dapat mengenali secara langsung bahasa himpunan, dan perisian diperlukan untuk menterjemah bahasa himpunan ke dalam bahasa mesin. Perbezaan antaranya dan bahasa mesin terletak pada kaedah perwakilan arahan Badan utama bahasa himpunan adalah arahan pemasangan Berbanding dengan arahan mesin, pengaturcara lebih mudah diingat.

MOV AX,1234H  //汇编指令: 寄存器AX的内容送到1234H中
101110000011010000010010 //机器指令

Bahasa peringkat tinggi

Bahasa peringkat tinggi yang biasa digunakan ialah: c, c++, java, python, php, dll.

Ia lebih dekat dengan pemikiran manusia biasa kita. Ciri terbesarnya ialah ia mudah ditulis dan kodnya boleh dibaca. Untuk mencapai fungsi yang sama, ia mengambil sedikit masa untuk menggunakan bahasa peringkat tinggi, kod program lebih pendek, dan lebih mudah dibaca. Kedua, bahasa peringkat tinggi adalah mudah alih, iaitu, sekeping kod boleh dijalankan pada pelbagai jenis komputer dengan sedikit atau tiada pengubahsuaian.

print('Hello World')   // python版HelloWorld

我们从这个程序可以看出来,高级语言屏蔽了机器内部指令运行细节,我们可以像写作一样书写程序,而不用关心语言内部的实现细节,这大大提高了我们的开发效率,节约开发成本

当然,其缺点也很明显,使用高级语言编写的程序运行时,需要先将其翻译成低级语言计算机才能运行它,在翻译过程中可能会产生一些多余的部分,运行效率低些。另外,对硬件的可控性相对于低级语言弱些,目标代码量较大


二. 进制

推荐使用在线工具进行进制转换

https://tool.oschina.net/hexconvert/

二进制

由数字0和1组成,逢二进一,比如机器码就是二进制的,是最简单的计算机可读懂的代码,例如 0101(表示十进制数字5)。

八进制

由1到7组成的数字串,数字最大不会超过7,逢八进一,例如 157(表示十进制数字111)

十进制

我们日常使用的数字都是十进制类型的,逢十进一,例如  0123456789。

十六进制

由1到9,a-f(或者是A-F,分别代表10-15)组成的数字串,数字最大不会超过15,其中字母是不区分大小写的,逢十六进一,例如0F83(表示十进制数3971)

进制转换

1. K进制与十进制数的转换

假设有一个n+1位的K进制数,它的形式如下:

AnAn-1…A3A2A1A0
则它的大小为:(也就是对应的我们能看懂的十进制数为)

A0 * K^0 + A1 * K^1....+ An * K^n      //K^n表示K的n次方

二进制数:10101 转换成 十进制数为:21

 1*2^4 + 0*2^3 + 1*2^2 + 0*2^1+1*2^0 = 21

2. 十进制与k进制的转换

短除法。

举个栗子:

Saya diam-diam melihat beberapa asas komputer, dan mulai sekarang belajar Java adalah seperti menipu!


从图可以看出,用十进制数21一直除以2,每次得到的余数倒数就是最后的二进制数10101。同样,十进制转八进制、十进制转十六进制都是一样的套路,非常简单。



3. 二进制与八进制和十六进制之间转换


8是2的3次方,16是2的4次方,所以这之间的转换存在一种快捷方法。以2转8示例,将2进制从低位到高位,每3个一组,如果是十六进制就每4个一组,高位不足3位的补0,然后将每组依次转换成对应的十进制,得到的结果就是对应的8进制或者16进制。

二进制10101100101转八进制:2545

Saya diam-diam melihat beberapa asas komputer, dan mulai sekarang belajar Java adalah seperti menipu!

二进制10101100101转十六进制:565
Saya diam-diam melihat beberapa asas komputer, dan mulai sekarang belajar Java adalah seperti menipu!

三. 原码、反码、补码

在计算机中,最小的单位是位,也称为比特(bit)。而另一个常用单位是字节,一个字节是8位,也就是8比特,所以我们常用的二进制表示法是8位。

原码

原码是一种非常常见的二进制表示形式。在原码中,为了区别正数和负数,将二进制中的最高位作为符号位,如果是0表示正数,如果是1表示负数。

举个栗子:

0000 0001   // 表示 1
1000 0001   // 表示 -1


反码

不知道大家有没有注意到原码的一个问题,那就是负数参与计算的时候,比如

Saya diam-diam melihat beberapa asas komputer, dan mulai sekarang belajar Java adalah seperti menipu!

出现了一个大问题,就是1 + (-1) 不等于0,而等于 -2。


这可咋整?

Untuk menyelesaikan masalah ini, pendahulu komputer pintar datang dengan idea pengekodan terbalik. Peraturan untuk menukar kod asal kepada kod songsang ialah: Kod songsang bagi nombor positif ialah dirinya sendiri, kod songsang bagi nombor negatif ialah bit tanda kekal tidak berubah dan bit lain adalah terbalik. Peraturan penafian ialah jika 0, ia menjadi 1, dan jika ia 1, ia menjadi 0.
Mari kita lihat pengiraan penukaran kepada kod songsang:

Saya diam-diam melihat beberapa asas komputer, dan mulai sekarang belajar Java adalah seperti menipu!

Hasilnya ialah 1111 1111.

Hei? Ini tidak betul, kenapa bukan 0?

Jangan risau, ini hanyalah hasil pengiraan kod songsang Kami menukar kod songsang kepada kod asal 1111 1111 —> hasil yang dijangkakan dan juga menyelesaikan pengiraan soalan asal.


Kod pelengkap

Kod songsang menyelesaikan masalah pengiraan nombor negatif, tetapi masih ada satu masalah yang belum diselesaikan iaitu -0 . Disebabkan kewujudan bit tanda bit tertinggi bagi nombor negatif, nombor perduaan lapan-bit asal boleh mewakili 2 hingga kuasa ke-8, iaitu, 256 nombor Walau bagaimanapun, menggunakan kod asal dan kod pelengkap sahaja mewakili 255, yang sangat tidak selesa untuk kami , jadi bagaimana kami boleh menebus nombor yang hilang ini?

Para pengaturcara botak juga menghasilkan penyelesaian yang sepadan - pelengkap kod.

Peraturan untuk menukar kod asal kepada kod pelengkap: Kod pelengkap nombor positif ialah dirinya sendiri, kod pelengkap nombor negatif ialah bit tanda kekal tidak berubah, digit yang tinggal disongsangkan (iaitu, menjadi kod pelengkap ) dan tambah 1.

Contohnya:

Kod asal: 0000 0001, kod pelengkap: 0000 0001
Kod asal: 1000 0001, kod pelengkap: 1111 1111


Calculate:
Saya diam-diam melihat beberapa asas komputer, dan mulai sekarang belajar Java adalah seperti menipu!

Seperti yang dapat dilihat dari atas, gunakan kod pelengkap Pengiraan memberi kita 0 (bukannya -0), menyelesaikan masalah kurang satu nombor.


Dalam kod pelengkap, dinyatakan bahawa 0 diwakili sebagai 0000 0000, dan 1000 0000 diwakili sebagai -128. Ambil perhatian bahawa ini adalah peraturan.


Nota

  1. Pelengkap seseorang dan pelengkap seseorang tidak boleh terus menggunakan peraturan penukaran perduaan kepada perpuluhan untuk mendapatkan saiz yang sepadan terlebih dahulu. Dalam erti kata lain, kod asal ialah satu bentuk ungkapan yang berkaitan secara langsung dengan saiz

  2. Dalam sistem komputer, nilai-nilai sentiasa dinyatakan dan disimpan dalam bentuk kod pelengkap

    Kod asal, pelengkap dan pelengkap nombor positif adalah sama nombor disongsangkan: bit tanda kekal tidak berubah, Nombor negatif disongsangkan selepas menafikan bit yang tinggal dan menambah satu
  3. Nombor negatif disongsangkan: bit tanda kekal tidak berubah dan baki bit dikurangkan dengan satu
  4. dilengkapkan dengan yang asal: bit tanda kekal tidak berubah dan bit yang tinggal dikurangkan satu dan disongsangkan

Atas ialah kandungan terperinci Saya diam-diam melihat beberapa asas komputer, dan mulai sekarang belajar Java adalah seperti menipu!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:Java学习指南. Jika ada pelanggaran, sila hubungi admin@php.cn Padam