int
kanggo ngetik short
utawa byte
, asil ora dikarepke? Ayo goleki!
int i = 450;
byte b = (byte)i;
System.out.println(b);
Asil ing layar:
-62
Ora dikarepke, ana panjelasan logis babagan iki, apa maneh, tumindak iki bisa ditindakake kanthi tangan sampeyan dhewe. Kanggo nindakake iki, kita kudu ngowahi 450 saka desimal menyang biner:
450/2. 0
225/2. 1
112/2. 0
56/2. 0
28/2. 0
14/2. 0
7/2. 1
3/2. 1
1/2. 1
Ing kolom sisih tengen nomer, kita nulis sisa-sisa nalika dibagi 2, lan ing ngisor nomer kasebut kita nulis asil pamisah nomer loro, yen sisane 0. Yen sisane 1, banjur ing ngisor iki ditulis bagean integer saka divisi dening loro. ( Kalkulator online kanthi panjelasan petungan ). Akibaté, kita entuk ing sistem nomer biner 450 = 11100 0010
. Sembarang nomer jinis int
manggoni 4 bita utawa 32 bit, ing ngendi saben bit 0 utawa 1. Ing kasus kita, mung 9 bit sing dikuwasani, lan ing prinsip kita int i = 450
ing sistem biner katon kaya iki:
0000_0000_0000_0000_0000_0001_1100_0010
Kita pengin nulis variabel kita dadi variabel jinis byte
, nanging nomer jinis byte
njupuk 1 bait (kaya ing ngisor iki saka jeneng jinis iki) utawa 8 bit. Mulane, bit ekstra ing sisih kiwa mung dibuwang, lan ing pungkasan kita entuk:
1100 0010
Jinis sawetara nilai byte
: -128 kanggo 127. Saben nomer manggoni 8 bit lan bit paling kiwa saben nomer iku tandha bit. Kanggo kabeh angka positif padha karo 0, kanggo kabeh nomer negatif padha karo 1. Ora perlu cepet-cepet ngowahi asil sing dipikolehi ing ndhuwur menyang sistem kaping 10, amarga kita nampa kode tambahan kanggo nomer sing dikarepake, lan ora langsung. Bit sing paling kiwa padha karo 1, mula nomer kita negatif, lan kanggo nomer negatif kode langsung lan mbalikke ora pas, ora kaya sing positif. Yen bit tandha padha karo 0, mula kita bisa langsung ngonversi nomer kasebut menyang sistem angka desimal lan entuk: 66. Nanging bit tandha negatif, mula kita kudu ngowahi kode tambahan dadi langsung lan nambah minus. tandha kanggo jawaban. Kanggo kajelasan lan latihan, ayo nyoba njaluk kode tambahan saka sawetara nomer, contone -15. Kanggo nindakake iki, ing kode langsung saka perwakilan positif (nomer 15), sampeyan kudu ngganti kabeh 0s kanggo 1s lan kosok balene (njaluk kode mbalikke, uga disebut kuwalik), lan banjur nambah siji kanggo asil. Ing sistem desimal 15 = 0000 1111
; Kode mbalikke (ngganti kabeh 0s dadi 1s lan kosok balene) = 1111 0000
; Kode tambahan (tambah siji):
1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 1
1 1 1 1 0 0 0 1
Kode tambahan kanggo nomer -15: 1111 0001
; Apik. Saiki, kanthi analogi karo conto ing ndhuwur, kita kudu ngowahi kode tambahan dadi kode langsung, supaya aku ngelingake sampeyan, padha karo 1100 0010
.
-
Ngurangi siji lan njaluk kode mbalikke. Iku trep kanggo nindakake iki, nulis mudhun kode tambahan ing jawaban lan ndeleng apa sing perlu kanggo nambah siji kanggo njaluk kuwi kode tambahan. Kita miwiti karo digit paling tengen lan katon: apa kita kudu nambah 1 kanggo njaluk 0? Kanggo 1, kita entuk 10, 0 dadi nanggepi, lan 1 menyang digit sabanjure. Sabanjure, apa sing kudu ditambahake menyang 0 kanggo entuk siji. Siji, nanging amarga kita duwe siji saka digit sadurunge, kita nulis 0 kanggo nanggepi. Sabanjure, kanggo entuk 0, apa sing kudu ditambahake menyang 0? Mesthi, 0. Dadi 4 kaping liyane. Lan isih ana 2 digit pungkasan, ing ngendi sampeyan kudu nambah soko 0 kanggo entuk 1. Mesthi, ing kasus loro sampeyan kudu nambah 1. Total:
1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0
-
Sisih paling angel wis rampung! Kita wis nampa kode kuwalik (muwalik) lan sing kudu ditindakake yaiku langsung. Kita walik kabeh 0 dadi 1 lan kosok balene:
1100 0001
- kode kuwalik;0011 1110
- kode langsung saka nomer kita, utawa rodo perwakilan positif; -
Ngonversi menyang sistem angka desimal ( Kalkulator online kanthi panjelasan petungan ):
0011 1110 = 0∙2^7+0∙2^6+1∙2^5+1∙2^4+1∙2^3+1∙2^2+1∙2^1+0∙2^0 = 0+0+32+16+8+4+2+0 = 62;
Kabeh sing isih ana yaiku nambah minus menyang nomer lan jawaban kita:
-62.
short
dadi jinis int
:
int i = 10_000_000;
short s = (short)i;
System.out.println(s); // -27008
-
10.000.000 ing sistem angka 10 =
0000 0000 1001 1000 1001 0110 1000 0000
ing sistem angka 2.Ing Jawa, nomer jinis
int
njupuk 4 bita, lanshort
nomer jinis njupuk 2 bita, utawa 16 bit, supaya kita Cut ngiwa kanggo 16 digit: -
Ayo terjemahake menyang kode mbalikke:
1 0 0 1 0 1 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0
Kode bali:
1001 0110 0111 1111
; -
Kita walik lan entuk kode langsung:
0110 1001 1000 0000
. -
Kita ngowahi menyang sistem nomer binar lan entuk perwakilan positif saka nomer kita:
1∙2^14+1∙2^13+1∙2^11+1∙2^8+1∙2^7 = 16384+8192+2048+256+128 = 27008.
-
Tambah minus lan entuk jawaban:
-27008
1001 0110 1000 0000
. Bit paling kiwa (dicokot paling pinunjul, uga dikenal minangka bit tandha) dadi padha karo 1. Iki tegese kita duwe kode tambahan kanggo nomer negatif, supaya kita pindhah menyang titik sabanjuré.
GO TO FULL VERSION