> Java > Java베이스 > 본문

컴퓨터 기초 몇 가지를 몰래 살펴보았는데, 이제부터 자바를 배우는 것은 부정행위와 같습니다!

풀어 주다: 2023-07-26 17:30:05
앞으로
1803명이 탐색했습니다.

Java를 배우기 전에, 컴퓨터 기초를 배워야 한다고 생각하시나요?

그렇게 지루하고 모호한 기초지식을 굳이 읽을 필요가 없다고 생각하는 분들이 많죠. 먼저 HelloWorld에서 직접 시작하는 것이 좋습니다. 먼저 프로그램을 터치하고 코드가 실행되면 점차적으로 구문을 익히는 것이 좋습니다. 프로그램을 심도 있게 학습하고 최종적으로 프로그램을 사용하여 프로젝트를 구축하는 것이 실용적인 학습 방법입니다.

우선, 저는 이 학습 방식을 부정하지 않습니다. 특히 취업을 열망하는 학생들에게 더 적합합니다. 원리는 천천히 배우면 됩니다. 나중에 깊이 이해해 보세요. 결국 빵보다 더 중요한 것은 없지요?

하지만 로그를 처음부터 배우는 학생들에게는 컴퓨터에 대한 기본 지식부터 시작하여 프로그래밍의 아이디어와 상식을 이해하는 것이 향후 학습에도 큰 도움이 될 것입니다. 그것은 집을 짓는 것과 같습니다. 어떤 사람은 초가집을 짓고, 어떤 사람은 흙집을 짓고, 어떤 사람은 2층짜리 서양식 집을 짓고 싶어합니다. 기초의 깊이는 미래 성과의 수준을 직접적으로 결정합니다.

이제 컴퓨터에 대한 기본 지식을 간략하게 알아보겠습니다.

1. 기계어의 분류

기계어

기계어는 컴퓨터가 직접 인식할 수 있는 언어를 이진 코드 명령어로 직접 표현한 컴퓨터 언어입니다. 0과 1의 문자열로 구성된 코드로, 특정 자릿수로 구성되며, 각 세그먼트의 코딩은 서로 다른 의미를 나타냅니다. 예를 들어 다음은 간단한 기계어 코드 문자열입니다.

010100100000  // 520
로그인 후 복사

왜 기계어가 0과 1로 구성되어 있는지 궁금해하시는 분들이 많습니다.

기계어는 프로그램 명령에 응답하기 위해 컴퓨터 하드웨어를 제어해야 하기 때문에 0은 낮은 전위를 나타내고 1은 높은 전위를 나타내므로 스위치를 제어하는 ​​것과 동일한 논리 회로가 생성됩니다. 1이 열려 있습니다.

어셈블리 언어

어셈블리 언어는 기계어가 모두 0과 1이기 때문에 개발자가 직접 제어하고 사용하기 어렵기 때문에 일부 특수 기호를 바이너리 코드의 마커로 사용해야 합니다. 개발자는 이러한 특수 기호를 입력하여 명령어 발행을 완료하고 컴퓨터가 이러한 특수 기호를 어셈블리 언어로 사용하도록 합니다. 컴퓨터는 어셈블리어를 직접 인식할 수 없으며, 어셈블리어를 기계어로 번역하는 소프트웨어가 필요합니다. 기계어와 차이점은 명령어의 표현방식에 있습니다. 어셈블리어는 기계어에 비해 프로그래머가 기억하기가 더 쉽습니다.

MOV AX,1234H  //汇编指令: 寄存器AX的内容送到1234H中
101110000011010000010010 //机器指令
로그인 후 복사

고급 언어 ​​

일반적인 고급 언어는 c, c++, java, python, php 등입니다.

우리의 정상적인 인간 사고에 더 가깝습니다. 가장 큰 특징은 쓰기 쉽고 코드를 읽을 수 있다는 것입니다. 동일한 기능을 달성하기 위해 고급 언어를 사용하는 데 시간이 덜 걸리고, 프로그램 코드가 더 짧으며, 읽기가 더 쉽습니다. 둘째, 고급 언어는 이식성이 있습니다. 즉, 코드 조각을 거의 또는 전혀 수정하지 않고 다양한 유형의 컴퓨터에서 실행할 수 있습니다.

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进制的转换

短除法。

举个栗子:

컴퓨터 기초 몇 가지를 몰래 살펴보았는데, 이제부터 자바를 배우는 것은 부정행위와 같습니다!


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



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


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

二进制10101100101转八进制:2545

컴퓨터 기초 몇 가지를 몰래 살펴보았는데, 이제부터 자바를 배우는 것은 부정행위와 같습니다!

二进制10101100101转十六进制:565
컴퓨터 기초 몇 가지를 몰래 살펴보았는데, 이제부터 자바를 배우는 것은 부정행위와 같습니다!

三. 原码、反码、补码

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

原码

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

举个栗子:

0000 0001   // 表示 1
1000 0001   // 表示 -1
로그인 후 복사


反码

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

컴퓨터 기초 몇 가지를 몰래 살펴보았는데, 이제부터 자바를 배우는 것은 부정행위와 같습니다!

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


这可咋整?

이 문제를 해결하기 위해 스마트 컴퓨터의 선배들은 반전 코드를 고안했습니다. 원본 코드를 역코드로 변환하는 규칙은 다음과 같습니다. 양수의 역코드는 그 자체이고, 음수의 역코드는 부호 비트는 그대로 유지되고 다른 비트는 반전됩니다. 부정의 법칙은 0이면 1이 되고, 1이면 0이 된다는 것입니다.
역코드로 변환한 계산을 살펴보겠습니다.

컴퓨터 기초 몇 가지를 몰래 살펴보았는데, 이제부터 자바를 배우는 것은 부정행위와 같습니다!

결과는 1111 1111입니다.

야 이거 아닌데 왜 0이 아니지?

걱정하지 마세요. 이는 역코드의 계산 결과일 뿐입니다. 역코드를 원래 코드 1111 1111 —> 1000 0000으로 변환하면 0인 -0을 얻게 됩니다. 예상된 결과를 얻고 원래 코드의 계산도 해결합니다.


보완 코드

anticode는 음수 계산 문제를 해결했지만, 아직 해결되지 않은 문제가 하나 있는데, 바로 -0 입니다. 음수의 최상위 비트인 부호비트가 존재하기 때문에 원래의 8비트 이진수는 2의 8승, 즉 256개의 숫자만 표현할 수 있다. 255를 나타내는데 이는 우리에게 매우 불편합니다. 그러면 이 누락된 숫자를 어떻게 보충할 수 있습니까?

대머리 프로그래머들도 이에 상응하는 솔루션인 코드 보완을 생각해 냈습니다.

원본 코드를 보수 코드로 변환하는 규칙: 양수의 보수 코드는 그 자체이고, 음수의 보수 코드는 부호 비트가 변경되지 않고 그대로 남아 있으며, 나머지 숫자는 반전됩니다(즉, 보수 코드가 됩니다) ) 그리고 1을 추가하세요.

예:

원래 코드: 0000 0001, 보완 코드: 0000 0001
원래 코드: 1000 0001, 보완 코드: 1111 1111

계산:

컴퓨터 기초 몇 가지를 몰래 살펴보았는데, 이제부터 자바를 배우는 것은 부정행위와 같습니다!

가능한 대로 위에서 본 보수 코드 계산은 -0 대신 0을 제공하여 숫자가 하나 적은 문제를 해결합니다.


보완 코드에서는 0은 0000 0000, 1000 0000은 -128로 표현한다고 명시되어 있습니다.


Notes

  1. 1의 보수와 1의 보수는 이진수에서 십진수로의 변환 규칙을 직접 사용할 수 없습니다. 해당 크기를 얻으려면 먼저 원본 코드로 변환해야 합니다. 즉, 원본 코드는 크기와 직접적으로 관련되는 표현의 형태입니다

  2. 컴퓨터 시스템에서는 값이 항상 보완 코드의 형태로 표현되어 저장됩니다

  3. 양수의 원래 코드, 보수 및 보수는 동일합니다.

  4. 음수의 원래 코드가 반전됩니다. 부호 비트는 변경되지 않고 나머지 비트는 반전됩니다.

  5. 음수의 원래 코드 숫자 반전: 부호 비트는 변경되지 않고 남아 있습니다. 음수는 나머지 비트를 부정하고 1을 추가한 후 반전됩니다

  6. 음수 반전: 부호 비트는 변경되지 않고 나머지 비트는 1만큼 줄어듭니다

  7. 음수 원본에 대해 보완됩니다. 부호 비트는 변경되지 않은 채로 유지되고 나머지 비트는 1만큼 감소되어 반전됩니다

위 내용은 컴퓨터 기초 몇 가지를 몰래 살펴보았는데, 이제부터 자바를 배우는 것은 부정행위와 같습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:Java学习指南
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!