一、進制介紹
1、二進制:0,1 -->不能直接用二進制來表示一個整數,用%b輸出二進制
package main
import "fmt"
func main() {
var i int =5
fmt.Printf("%b",i) //--->>顯示5的二進制數
2、十進制:0-9
3、八進制:0-7 -->>以數字0開頭表示
package main
import "fmt"
func main() {
var a int = 011
fmt.Println("a=",a)
4、十六進制:0-9 A-F(字母不區分大小寫),以0x開頭表示,字母不區分大小寫
package main
import "fmt"
func main() {
var j =0x11
fmt.Println("j=",j)
二、進制轉換-其他進制轉十進制(初始進制數*初始進制數的次方)
1、二進制轉十進制:1011=11,1*2的3次方+0*2的2次方+1*2的1+1*2的0次方
2、八進制轉十進制:0123=83,1*8的2次方+2*8的1次方+3*8的0次方
3、十六進制轉十進制:0x34A=842,3*16的2次方+4*16的1次方+10(A)*16的0次方
三、進制轉換-十進制轉其他進制--->>>都是除以要轉的進制數,取余數
1、十進制轉二進制轉,該數除以2,將余數倒過來,就是二進制 10=1010
2、十進制轉八進制,該數除以8,將余數倒過來,就是八進制 156=0234
3、十進制轉十六進制,該數除以16,將余數倒過來,就是十六進制 356=0X164
四、進制轉換-二進制轉其他進制(八進制時三位為一組,十六進制時四位為一組)
1、二進制轉八進制:將二進制分三位為一組,再將每個數*2的次方,1101011=0325
2、二進制轉十六進制:將二進制分四位為一組,再將每個數*2的次方,11010101=0xD5
五、進制轉換-其他進制轉二進制--->>>都是除以要轉的進制數,取余數
1、八進制轉二進制:將每一位八進制數轉成三位的二進制,0237=10011111
2、十六進制轉二進制:將每一位十六進制數轉成四位的二進制,0x237=1000110111
六、位運算:&、|、^、<<、>>,運算需將轉成補碼運算,若是負數,需將結果從補碼轉成反碼,再轉成源碼
1、原碼、反碼、補碼介紹
2、二進制最高位是符號位,0表示正數,1表示負數 --->>1=0000 00001 -1=1000 0001
3、正數的原碼,反碼,補碼都是一樣
4、負數的反碼=原碼符號位數不變,其它取反,補碼=反碼+1
1-->>原碼:0000 0001-->反碼:0000 0001-->補碼:0000 0001
-1-->>原碼:1000 0001-->反碼:1111 1110-->補碼:1111 1111
5、0的反碼,補碼都是0
6、在計算機運算的時候都是采用補碼的方式運算
7、負數:補碼轉反碼是-1,反碼轉源碼是取反
8、& 按位與:全1為1,否則為0
-->>2&3=2 2=0000 0010 3=0000 0011,將2和3的二進制補碼進行&運算
9、| 按位或:有1出1,否則為0 -->>2|3=3 2=0000 0010 3=0000 0011,將2和3的二進制補碼進行|運算
10、^ 按位異或:一個為1,一個為0,結果為1,否則為0
-->>2^3=1 2=0000 0010 3=0000 0011,將2和3的二進制補碼進行^運算
-->>-2^2=-4 2=(原碼:1000 0010-->>反碼:1111 1101-->>補碼:1111 1110 2=0000 0011,將-2和2的二進制補碼進行^運算
-->>運算結果是補碼:1111 1100-->>轉反碼:1111 1011-->>轉源碼:1000 0100=-4
11、右位移運算:低位溢出,符號位不變,並用符號位補溢出的高位
12、左位移運算:符號位數不變,低位補0