Programim dhe zhvillim, javascript, python, php, html

Në Java, a mund të përcaktoj një konstante numër të plotë në formatin binar?

Ngjashëm me mënyrën se si mund të përcaktoni një konstante numër të plotë në heksadecimal ose oktal, a mund ta bëj atë në binar?

E pranoj se kjo është një pyetje vërtet e lehtë (dhe budallaqe). Kërkimet e mia në Google po dalin bosh.

15.05.2009

  • Thjesht FYI, pothuajse në çdo gjuhë programimi, idioma është të shkruash konstante binare në heks, dhe jo vargun binar aktual. 07.11.2009
  • E drejtë, por unë imagjinoj se kjo është për shkak se hex është gjëja më e afërt e disponueshme, jo sepse ka diçka që nuk shkon me binarin. Në gjuhët që kam përdorur që mbështesin literale binare, nuk mendoj se konventa është të injorosh këtë veçori. 11.07.2010
  • docs.oracle.com/javase/8/ docs/technotes/guides/language/ 16.06.2016
  • Viti 2017: përgjigja e pranuar duhet të jetë ajo e dhënë nga Russ. Shiko: stackoverflow.com/a/1692932/716079 15.08.2017

Përgjigjet:


1

Pra, me lëshimin e Java SE 7, shënimi binar del standard nga kutia. Sintaksa është mjaft e drejtpërdrejtë dhe e qartë nëse keni një kuptim të mirë të binares:

byte fourTimesThree = 0b1100;
byte data = 0b0000110011;
short number = 0b111111111111111; 
int overflow = 0b10101010101010101010101010101011;
long bow = 0b101010101010101010101010101010111L;

Dhe konkretisht në pikën e deklarimit të variablave të nivelit të klasës si binare, nuk ka absolutisht asnjë problem në inicializimin e një ndryshoreje statike duke përdorur gjithashtu shënimin binar:

public static final int thingy = 0b0101;

Vetëm kini kujdes që të mos tejmbushni numrat me shumë të dhëna, përndryshe do të merrni një gabim përpiluesi:

byte data = 0b1100110011; // Type mismatch: cannot convert from int to byte

Tani, nëse vërtet dëshironi të jeni të zbukuruar, mund të kombinoni atë veçori tjetër të re të pastër në Java 7 të njohur si fjalë për fjalë numerike me nënvizime. Hidhini një sy këtyre shembujve të mrekullueshëm të shënimit binar me nënvizime fjalë për fjalë:

int overflow = 0b1010_1010_1010_1010_1010_1010_1010_1011;
long bow = 0b1__01010101__01010101__01010101__01010111L;

Tani a nuk është e bukur dhe e pastër, për të mos përmendur shumë të lexueshme?

I nxora këto copa kodi nga një artikull i vogël që shkrova rreth temës në TheServerSide. Mos ngurroni ta shikoni për më shumë detaje:

Java 7 dhe Shënimi Binar: Masterizimi i Provimit të Programuesit Java OCP (OCPJP)

20.12.2011
  • Pse të dhënat tuaja të bajtit janë = 0b0000110011; ka 10 bit? Unë jam i ri në programim, por mendoj se duhet të duket si 0b00110011 për të përshtatur 8 bit të llojit të të dhënave bajt. 24.08.2014
  • Për këdo që pyet njësoj si Mike, kjo ndodh sepse përpiluesi e konverton atë në numrin që përfaqëson - mund të keni dhjetëra zero kryesore dhe ato nuk do të ndikojnë në vlerën aktuale. Procesi i përpilimit është në thelb i njëjtë sikur të kishit shkruar atje një dhjetore. 31.01.2017
  • sipas definicionit bajt i tipit primitiv mund të ruajë 256 numra nga -128 në 127 ( -128 në -1 & 0 deri në 127 ). Por si të përfaqësohet -128 duke përdorur një literale binare. për p.sh. byte b = -0b1111111; tregon -127 por ç'të themi për -128? 29.10.2017

  • 2

    Në Java 7:

    int i = 0b10101010;
    

    Nuk ka literale binare në versionet më të vjetra të Java (shih përgjigjet e tjera për alternativat).

    07.11.2009
  • Gjithashtu do të doja të theksoja se mund të ketë _ karaktere për ta bërë sekuencën më të lexueshme: int i = 0b1010_1010_0011; 09.03.2012
  • @Russ Çfarë do të thotë 0b këtu? Si quhet kjo veçori në Java 7? 23.08.2012
  • 0b nënkupton binare. Veçoria quhet literale binare: docs.oracle .com/javase/7/docs/technotes/guides/language/ 23.08.2012
  • E pëlqeni këtë paraqitje të re të të dhënave binare. Përfaqësimi i vargut do të ishte shumë i vështirë për t'u lexuar. Shikoni ndryshimin e përgjigjes së pranuar dhe asaj nga @user12345613. +1 për të. 13.11.2013

  • 3

    Nuk ka fjalë binar në Java, por supozoj se mund ta bëni këtë (megjithëse nuk e kuptoj pikën):

    int a = Integer.parseInt("10101010", 2);
    
    15.05.2009
  • Ndër përdorimet e tjera, modeli stippling për rasterizimin e linjës dhe të shumëkëndëshit është specifikuar si një numër i plotë në disa biblioteka të njohura grafike. Përdorimi i parseInt ose parseShort lejon zhvilluesin të vizualizojë lehtësisht modelin. 12.02.2011
  • Që nga Java 7, përgjigja e Russ Hayward është përgjigjja e saktë. Përpara Java 7, mund të përdorni një mjet online ose kalkulatorin tuaj të preferuar për të kthyer binarin në një nga shënimet e njohura nga versionet e vjetra Java (oktal, dhjetor ose heksadecimal). Nëse përdoret një bazë tjetër, një koment përshkrues që përmban paraqitjen binar mund të vendoset në deklaratë për të sqaruar vlerën për lexuesit. 20.11.2013
  • Kjo është një zgjidhje mjaft e ndyrë, apo jo? Ju po merrni vetëm 16 bajt për të përfaqësuar 1 bajt (duke mos llogaritur argumentin e dytë dhe konvertimin). Sigurisht, përveç nëse përpiluesi e optimizon këtë, gjë për të cilën dyshoj. 25.04.2014
  • @TomášZato: Po, është, por çfarë zgjidhje do të sugjeronit duke qenë se gjuha nuk mbështeti literale binare kur shkrova këtë përgjigje? Russ Hayward duhet të ketë përgjigjen e pranuar tani. 25.04.2014
  • Unë do të sugjeroja të hiqni dorë nga komoditeti dhe të përdorni numra të plotë. Në vetë përkufizimin e variablës, është në rregull, por kjo përgjigje mund t'i motivojë përdoruesit të përdorin këtë qasje për loop, etj. Dhe në përgjithësi, mendoj se programuesi duhet të përpiqet të heqë dorë nga rehatia e tij për disa performancë. 26.04.2014
  • @TomášZato: Kështu do të bëja edhe unë, dhe thashë po aq në përgjigjen time. 26.04.2014
  • Viti 2017: Për fat të mirë ekziston një shënim për paraqitjen binar. Fillon me 0b. Shembull: byte b = 0b01000001 (për një gatishmëri më të mirë byte b = 0b0100_0001). 15.08.2017

  • 4

    Përgjigja nga Ed Swangren

    public final static long mask12 = 
      Long.parseLong("00000000000000000000100000000000", 2);
    

    punon mirë. Kam përdorur long në vend të int dhe shtova modifikuesit për të sqaruar përdorimin e mundshëm si një maskë bit. Megjithatë, ka dy shqetësime me këtë qasje.

    1. Shtypja e drejtpërdrejtë e të gjitha atyre zerove është e prirur për gabime
    2. Rezultati nuk është i disponueshëm në format dhjetor ose heks në kohën e zhvillimit

    Unë mund të sugjeroj një qasje alternative

    public final static long mask12 = 1L << 12;
    

    Kjo shprehje e bën të qartë se biti i 12-të është 1 (numërimi fillon nga 0, nga e djathta në të majtë); dhe kur rri pezull kursorin e miut, këshilla e veglave

    long YourClassName.mask12 = 4096 [0x1000]
    

    shfaqet në Eclipse. Ju mund të përcaktoni konstante më të ndërlikuara si:

    public final static long maskForSomething = mask12 | mask3 | mask0;
    

    ose në mënyrë eksplicite

    public final static long maskForSomething = (1L<<12)|(1L<<3)|(1L<<0);
    

    Vlera e ndryshores maskForSomething do të jetë ende e disponueshme në Eclipse në kohën e zhvillimit.

    30.07.2009
  • Zgjidhje brilante! (maskë e gjatë statike përfundimtare publike12 = 1L ‹‹ 12;) 24.07.2012

  • 5

    Përdorimi i konstantave binare për maskimin

    Deklaroni konstante:

    public static final int FLAG_A = 1 << 0;
    public static final int FLAG_B = 1 << 1;
    public static final int FLAG_C = 1 << 2;
    public static final int FLAG_D = 1 << 3;
    

    dhe t'i përdorin ato

    if( (value & ( FLAG_B | FLAG_D )) != 0){
        // value has set FLAG_B and FLAG_D
    }
    
    14.03.2011

    6

    Kërkoni "Sintaksën e fjalëve të fjalës Java" në Google dhe do të gjeni disa hyrje.

    Ekziston një sintaksë oktale (prefiksoni numrin tuaj me 0), sintaksë dhjetore dhe sintaksë heksadecimal me një parashtesë "0x". Por nuk ka sintaksë për shënimin binar.

    Disa shembuj:

    int i = 0xcafe ; // hexadecimal case
    int j = 045 ;    // octal case
    int l = 42 ;     // decimal case
    
    15.05.2009
  • Kjo nuk i përgjigjet pyetjes. 16.02.2017
  • Viti 2017: Për fat të mirë ekziston një shënim për paraqitjen binar. Fillon me 0b. Shembull: byte b = 0b01000001 (për një gatishmëri më të mirë byte b = 0b0100_0001). 15.08.2017

  • 7

    Nëse doni të ngatërroni me shumë binare, mund të përcaktoni disa konstante:

    public static final int BIT_0 = 0x00000001;
    public static final int BIT_1 = 0x00000002;
    

    etj.

    or

    public static final int B_00000001 = 0x00000001;
    public static final int B_00000010 = 0x00000002;
    public static final int B_00000100 = 0x00000004;
    
    09.07.2010

    8

    Përgjigje pak më e çuditshme:

    public class Main {
    
        public static void main(String[] args) {
            byte b = Byte.parseByte("10", 2);
            Byte bb = new Byte(b);
            System.out.println("bb should be 2, value is \"" + bb.intValue() + "\"" );
        }
    
    }
    

    cilat dalje [java] bb duhet të jenë 2, vlera është "2"

    15.05.2009
    Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..