偷偷看了點電腦基礎,從此學Java猶如開掛!
學習Java之前,我想問一個問題,你們覺得有沒有必要學習電腦基礎?
很多人覺得沒有必要看那些枯燥晦澀的基礎知識,不如直接從HelloWorld開始,先接觸程序,有個印象,程式碼跑起來,然後再逐步深入學習程式的語法,到最後使用程序搭建項目,也就是實戰學習法。
首先我不否定這樣的學習方式,確實對某部分同學來說是比較適用的,尤其是一些著急找工作的同學,先學會怎麼去用,至於原理,可以以後慢慢去深入了解,畢竟沒有什麼比麵包?更重要。
但是對於我們大對數從頭開始學習的同學,我還是建議從計算機的一些基礎小知識開始,了解程式設計的思想和常識,這對於我們以後的學習也是非常有幫助的。就好比蓋房子,有的人蓋的是茅草屋,有的人蓋的是泥瓦屋,而有人卻想著蓋二樓小洋樓。基礎的深淺程度,直接決定了以後成就的高低。
那麼現在我們就來簡單了解下電腦的一些基礎小知識。
一.機器語言的分類
機器語言
機器語言就是電腦能直接能辨識的語言,它是直接用二進位代碼指令表達的電腦語言。它是由一串0和1組成的代碼,有一定的位數,並分成若干段,各段的編碼表示不同的意義。例如下面就是一串簡單的機器碼:
010100100000 // 520
那麼很多人問,為什麼機器碼是0和1組成的?
因為機器碼需要控制電腦硬體對程式指令做出反應,0代表低電位,1代表高電位,這樣才能產生邏輯電路,就相當於控制開關一樣,0是關閉,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,完全符合預期的結果,也解決了原碼的計算問題。
補碼
反碼解決了負數計算的問題,但還有一個問題沒有解決,就是 -0 。由於負數最高位的符號位的存在,導致原本八位的二進制數能表示2的8次方即256個數字,使用原碼與反碼卻只能表示255個,這對我們來說是非常難受的,那麼這少的一個數怎麼能彌補上呢?
禿頭的程式設計師老哥哥們也想出了對應的解決辦法-補碼。
原碼轉補碼的規則:正數的補碼就是其本身,負數的補碼是符號位元不變,其餘位數取反(即變成反碼)再加1。
舉個栗子:
原碼:0000 0001 , 補碼:0000 0001
原碼:1000 0001 , 補碼:1111 1111
計算一下:

從上面看出,利用補碼計算我們得到了0 (而不是-0 ),解決了少一個數字的問題。
在補碼中,規定了0的表示為0000 0000,而1000 0000表示的為-128,注意,這是規定。
注意事項
#反碼與補碼不能直接使用二進位轉十進位的規則,轉成對應的十進制得到對應的大小,應該先轉成原碼後才可以。也就是說原碼才是直接與大小進行關聯的一種表現形式
在電腦系統中,數值一律以補碼的形式進行表示與儲存
正數的原碼、反碼與補碼都是一樣的
#負數原轉反:符號位元不變,其餘位元取反
負數原轉補:符號位元不變,其餘位元取反後加一
負數補轉反:符號位元不變,其餘位元減一
負數補轉原:符號位元不變,其餘位元減一後取反
以上是偷偷看了點電腦基礎,從此學Java猶如開掛!的詳細內容。更多資訊請關注PHP中文網其他相關文章!
熱AI工具
Undress AI Tool
免費脫衣圖片
Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片
AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。
Clothoff.io
AI脫衣器
Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!
熱門文章
熱工具
記事本++7.3.1
好用且免費的程式碼編輯器
SublimeText3漢化版
中文版,非常好用
禪工作室 13.0.1
強大的PHP整合開發環境
Dreamweaver CS6
視覺化網頁開發工具
SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)
撰寫PHP評論的提示
Jul 18, 2025 am 04:51 AM
寫好PHP註釋的關鍵在於明確目的與規範,註釋應解釋“為什麼”而非“做了什麼”,避免冗餘或過於簡單。 1.使用統一格式,如docblock(/*/)用於類、方法說明,提升可讀性與工具兼容性;2.強調邏輯背後的原因,如說明為何需手動輸出JS跳轉;3.在復雜代碼前添加總覽性說明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標記待辦事項與問題,便於後續追踪與協作。好的註釋能降低溝通成本,提升代碼維護效率。
通過評論提高可讀性
Jul 18, 2025 am 04:46 AM
寫好註釋的關鍵在於說明“為什麼”而非僅“做了什麼”,提升代碼可讀性。 1.註釋應解釋邏輯原因,例如值選擇或處理方式背後的考量;2.對複雜邏輯使用段落式註釋,概括函數或算法的整體思路;3.定期維護註釋確保與代碼一致,避免誤導,必要時刪除過時內容;4.在審查代碼時同步檢查註釋,並通過文檔記錄公共邏輯以減少代碼註釋負擔。
編寫有效的PHP評論
Jul 18, 2025 am 04:44 AM
註釋不能馬虎是因為它要解釋代碼存在的原因而非功能,例如兼容老接口或第三方限制,否則看代碼的人只能靠猜。必須加註釋的地方包括複雜的條件判斷、特殊的錯誤處理邏輯、臨時繞過的限制。寫註釋更實用的方法是根據場景選擇單行註釋或塊註釋,函數、類、文件開頭用文檔塊註釋說明參數與返回值,並保持註釋更新,對複雜邏輯可在前面加一行概括整體意圖,同時不要用註釋封存代碼而應使用版本控制工具。
PHP開發環境設置
Jul 18, 2025 am 04:55 AM
第一步選擇集成環境包XAMPP或MAMP搭建本地服務器;第二步根據項目需求選擇合適的PHP版本並配置多版本切換;第三步選用VSCode或PhpStorm作為編輯器並搭配Xdebug進行調試;此外還需安裝Composer、PHP_CodeSniffer、PHPUnit等工具輔助開發。
PHP比較操作員
Jul 18, 2025 am 04:57 AM
PHP比較運算符需注意類型轉換問題。 1.使用==僅比較值,會進行類型轉換,如1=="1"為true;2.使用===需值與類型均相同,如1==="1"為false;3.大小比較可作用於數值和字符串,如"apple"
PHP評論語法
Jul 18, 2025 am 04:56 AM
PHP註釋有三種常用方式:單行註釋適合簡要說明代碼邏輯,如//或#用於當前行解釋;多行註釋/*...*/適合詳細描述函數或類的作用;文檔註釋DocBlock以/**開頭,為IDE提供提示信息。使用時應避免廢話、保持同步更新,並勿長期用註釋屏蔽代碼。
有效的PHP評論
Jul 18, 2025 am 04:33 AM
寫好PHP註釋的關鍵在於清晰、有用且簡潔。 1.註釋應說明代碼背後的意圖而非僅描述代碼本身,如解釋複雜條件判斷的邏輯目的;2.在魔術值、舊代碼兼容、API接口等關鍵場景添加註釋以提升可讀性;3.避免重複代碼內容,保持簡潔具體,並使用標準格式如PHPDoc;4.註釋需與代碼同步更新,確保准確性。好的註釋應站在他人角度思考,降低理解成本,成為代碼的理解導航儀。
團隊的PHP評論
Jul 18, 2025 am 04:28 AM
寫好PHP註釋的關鍵在於解釋“為什麼”而非“做什麼”,統一團隊註釋風格,避免重複代碼式註釋,合理使用TODO和FIXME標記。 1.註釋應重點說明代碼背後的邏輯原因,如性能優化、算法選擇等;2.團隊需統一註釋規範,如單行註釋用//,函數類用docblock格式,並包含@author、@since等標籤;3.避免僅複述代碼內容的無意義註釋,應補充業務含義;4.使用TODO和FIXME標記待辦事項,並可配合工具追踪,確保註釋與代碼同步更新,提升項目可維護性。


