Bitveida operācijas

Last modified by superadmin on 2018-01-12 20:40

Bitveida operācijas

Līdzās parakstajām loģiskajām operācijām (konjunkcijai, disjunkcijai, negācijai) pastāv arī bitveida operācijas: & (bitu konjunkcija), | (bitu disjunkcija), ~ (bitu negācija) un ^ (bitu XOR, jeb bitu izslēdzošais VAI). Tās darbojas nevis ar patiesuma vērtībām true un false, bet ar veseliem skaitļiem, kuri aizņem, teiksim, 8, 16 vai 32 bitus datora atmiņā. Šīs operācijas ar katru skaitļa binārā pieraksta pozīciju veic attiecīgās loģiskās operācijas, ciparu "1" uzskatot par true un "0" par false. Piemēram, 001100112 & 101010102 = 001000102, t.i. decimālajā pierakstā 51 & -86 = 34.

Veicot darbības ar bitiem, jāatceras, ka pozitīva skaitļa pieraksts datora atmiņā sākas ar bitu "0", bet negatīva skaitļa pieraksts - ar bitu "1". Pozitīvus skaitļus interpretē kā skaitļus, kas uzrakstīti divnieku skaitīšanas sistēmā, bet negatīviem skaitļiem lieto papildkodu.

Starp bitu operācijām minēsim arī bitu nobīdes operācijas, kuras arī rakstīsim Javas sintaksē:

  • Bitu nobīde par kreisi: x << n (x - skaitlis, n - par cik bitiem nobīdīt tā bināro pierakstu). No labās puses atbrīvotajās vietās raksta nulles. Pēc absolūtās vērtības nelieliem skaitļiem šī darbība sakrīt ar reizināšanu ar 2n. Piemēram, 000010112 << 3 = 010110002, t.i. decimālajā sistēmā 11 << 3 = 88.
  • Bitu nobīde par labi: x >> n (x - skaitlis, n - par cik bitiem nobīdīt). Kreisajā pusē atbrīvotajās vietās raksta nulles vai vieniniekus, atkarībā no skaitļa zīmes. Šī darbība ir analoģiska dalīšanai veselos skaitļos ar 2n. Piemēram, 000010112 >> 1 = 000001012 (t.i. decimālajā sistēmā 11 >> 1 = 5). Turpretī negatīvs skaitlis nobīdās šādi: 111110012 >> 1 = 111111002 (t.i. decimālajā sistēmā -7 >> 1 = -4).
  • Bezzīmes bitu nobīde pa labi: x >>> n (x - skaitlis, n - par cik bitiem nobīdīt). Atšķirībā no parastās nobīdes pa labi, kreisajā pusē skaitli vienmēr papildina ar nullēm. Piemēram 111110012 >>> 1 = 011111002, t.i. decimālajā sistēmā -7 >>> 1 = 124, ja reģistra platums ir 8 biti. Ievērojiet, ka šīs operācijas rezultāts ir atkarīgs no reģistra platuma. Piemēram, 16 bitus platam reģistram ir spēkā cita vienādība: -7 >>> 1 = 32764
Tags:
Created by Kalvis Apsītis on 2008-05-01 19:40
    
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 6.4 - Documentation