------------恢復內容開始------------
------------恢復內容開始------------
進制的轉換
十進制轉相應進制
(十進制)231 轉 八進制 除八取余法 從下而上取余
231/8=28 ....7
28/8=3.......4
3/8=0........3
(十進制)231=(八進制)0o347
(十進制)231 轉 16進制 除十六取余法 從下而上取余
231/16=14......7
14/16=0..........14
(十進制) 231=(十六進制)0xe7
(十進制)231.3 轉 16進制 (*)小數部分 乘十六取整法 從上而下取整
0.3*16=0.48............0
0.48*16=7.68..........7
0.68*16=10.88........10
0.88*16=14.08........14
0.08*16=1.28..........1
0.28*16=4.48 .........4
(十進制)231.3=(十六進制)0xe7.07ae14
相應進制轉十進制
(八進制)0o27.43轉 十進制
7*8^0+2*8^1=(八進制)23
4*8^-1+3*8^-2=35/64=0.546875
0o27.43=(十進制)23.546875
(十六進制)0o27.43轉 十進制(同上)
。。。。。。。。
進制換算補充
在進行十轉二,八,十六進制小數點換算時,不管怎么乘二,八或十六,結果小數部分始終不為零時,分別有一舍二入,三舍四入,七舍八入對應操作
八進制直接轉十六進制或者十六轉八,只有通過二進制,或十進制中間過渡,沒有捷徑,如果哪位大神有直接轉換的方法歡迎告知
二進制的原碼,反碼,補碼
正數的原碼,反碼,補碼
24=(二進制)00....00011000
原碼:00....00011000
反碼:00....00011000
補碼:00....00011000
負數的原碼,反碼,補碼
-24=(二進制)1000....00011000
原碼:1000.....00011000
反碼:11111....11100111
補碼:1000.....11101000 (反碼加一)
二進制的運算
計算機對數字的加減運算都是用補碼
-23(原碼):1000.....00010111
-23(反碼):1111......11101000
-23(補碼):1111......11101001
12(原碼):0000.....00001100
12(反碼):0000.....00001100
12(補碼):0000.....00001100
12(補碼)0000.....00001100(補碼相加時,高位也就是符號位也要運算進來)
-23(補碼)1111......11101001
` -23(補碼)+12(補碼)=1111......11110101(結果如果是負數,也就是高位是1,取反加一)
(結果取反加一)1000......00001011= -23+12=-11
&(與),^(異或),|(或) ,~(按位取反) (*)
&(與)(1&1=1,1&0=0,0&0=0)
101010001
1101 00111
=100000001
^(異或)(1^1=0,0^0=0,0^1=1)
101010001
1101 00111
=01111 0110
|(或)(1|0=1,1|1=1,0|0=0)
101010001
1101 00111
=11111 0110
~(按位取反)對補碼進行取反,取反結果為負,進行反碼加一
-12
原碼:100........1100
反碼:111.........0011
補碼:111.........0100
取反:000.........1011=11
12
原碼:000........1100
反碼:000........1100
補碼:000........1100
取反:111.........0011 結果負數,反碼加一
100........1101=-13
1
原碼:000........0001
反碼:000.........0001
補碼:000.........0001
取反:111.........1110
100..........0010=-2
-1
原碼:100........0001
反碼:111.........1110
補碼:111.........1111
取反:000.........0000=0
位移算數左移<<,算數右移>>,邏輯右移>>>(全都是補碼進行的位移)
5>>2=1
(補碼)00..0101>>2=00..0001
-5>>2=-2
10..0101
(補碼)11..1010+1=11..1011
11..1011>>2=1111..1110(為負數,要反碼+1)
1000..0001+1=1000..0010=-2
5>>>2=1(和算數位移結果一樣)
(補碼)00..0101>>2=00..0001
-5>>>2=1073741822
10..0101
(補碼)11..1010+1=11..1011
11..1011>>>2=0011..1110(邏輯右移,高位始終補零,所以不用反碼補一,結果就是一個很大的整數)
------------恢復內容結束------------
------------恢復內容結束------------