Bitwise Operators and WHY we use them

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ธ.ค. 2024

ความคิดเห็น •

  • @loayalsaid6343
    @loayalsaid6343 ปีที่แล้ว +59

    small missed detail, : the bitwise, & and | or whatever, they look if both are set, meaning both are one, not just matching, because if both are 0 for example, & will give zero and not 1
    The video is amazing, Thank you, really!.

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว +35

      That is a very good point, I should have mentioned that in the video. Thank you for pointing it out.
      For those finding this comment in the future:
      IF:
      a = 1
      b = 1
      THEN:
      a & b = 1
      IF:
      a = 0
      b = 0
      THEN:
      a & b = 0

    • @AntiAtheismIsUnstoppable
      @AntiAtheismIsUnstoppable 11 หลายเดือนก่อน +1

      I mean... how can anyone call himself a programmer and then not know the most basic of how computers operate, which literally can be learned in one day?
      This is like claiming to be a matematician, but not knowing how addition works.
      I will never ever trust any programmer who doesn't know the most basic of his own tool.

    • @loayalsaid6343
      @loayalsaid6343 11 หลายเดือนก่อน +4

      I know, and appreciate what you said,
      but you know, mistakes happens, and he said he forgot about it, now he does not know about it.
      buy anyway, Good luck with your learniing process.

    • @witchoutcandy
      @witchoutcandy 10 หลายเดือนก่อน

      so in the XOR example:
      READ_WRITE = 4
      WRITE_PERMISSION = 2
      EXECUTE_PERMISSION = 1
      userPermissions ^= WRITE_PERMISSION
      this equals 4 because 6^2 is 110^010, that IS 100, right?
      i've thinking... the userPermissions was 7 because of the last operator example, so 111^010 was going to be 5, and the userPermissions "lost" WRITE_PERMISSION but didnt lost execute_permission and read_permission :0 epic

    • @gabeznl3591
      @gabeznl3591 8 หลายเดือนก่อน

      Also, how can the binary number 0011 equals to 6? It's always 3 in decimal...

  • @johningram2153
    @johningram2153 10 หลายเดือนก่อน +16

    I've been using the term "bit" when explaining unix permissions ot people for over 25 years, and never understood why. Great video.

  • @TVParsley
    @TVParsley 8 หลายเดือนก่อน +5

    You explained in 8 minutes what my CS professor couldn’t explain in an hour! Great video!

  • @lanniekin
    @lanniekin 2 ปีที่แล้ว +22

    Thank you for this! I've been a game developer for a while and had never had to deal with this concept, but it's been thrown at me with very little explanation in the cybersec course I'm taking. This was very helpful :)

    • @alexhyettdev
      @alexhyettdev  2 ปีที่แล้ว

      I am glad you found it helpful. They are definitely one of the lesser used bits of programming.

  • @numbertumbers529
    @numbertumbers529 2 ปีที่แล้ว +6

    This was very well-made and informative! You deserve a lot more than 94 subscribers!

    • @alexhyettdev
      @alexhyettdev  2 ปีที่แล้ว +1

      Thank you very much, I am glad you liked it.

    • @bouzie8000
      @bouzie8000 10 หลายเดือนก่อน +3

      oh how much he has grown since this comment

  • @cannabisanomaly
    @cannabisanomaly 6 หลายเดือนก่อน +1

    I always come back to this video to refresh my terrible memory on bitwise operations. Thank you Alex!

  • @IsraelSilva-ho8yc
    @IsraelSilva-ho8yc 3 หลายเดือนก่อน +1

    Thank you so much for this man, got a task at work dealing with this and was a "bit" lost 🥁

  • @mr.luxxyandreneo5168
    @mr.luxxyandreneo5168 ปีที่แล้ว +2

    Sir really , the rwx ex. from linux was amazing , none told us such deeply, thanks for relating bin no with programming & with linux, just amazing

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว +1

      Thank you for the kind words. I am glad my video was helpful!

  • @paval1s69
    @paval1s69 2 ปีที่แล้ว +4

    Nice! Already learned it but it was still great as a refresher and also a great introduction for newbies to the topic. A shame that the channel is not that big yet

    • @alexhyettdev
      @alexhyettdev  2 ปีที่แล้ว

      Thanks! I have only started posting regularly at the start of this month so still early days 🤞🏻

  • @Nonsense116
    @Nonsense116 4 หลายเดือนก่อน

    excellent video! I'm a Java & React dev. I've been getting into C lately reading the K&R book and was having a hard time internalizing the bitwise operators. This is exactly what I needed.

  • @mikeh7704
    @mikeh7704 10 หลายเดือนก่อน +1

    This reminds me of the days I was learning Z80 machine language programming. Nice video! Are there no bitwise rotate operators, or are they rarely needed in higher-level languages?

  • @oglothenerd
    @oglothenerd ปีที่แล้ว +5

    Well, I just learned something cool about UNIX file permissions! I love this, because I use Arch, btw.

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว +1

      That's great! I used Arch a lot when I was younger. Back when I had time to customise everything lol

    • @oglothenerd
      @oglothenerd ปีที่แล้ว +1

      @@alexhyettdev Lol.

    • @oglothenerd
      @oglothenerd ปีที่แล้ว +1

      @@alexhyettdev I am 14, so, yeah... XD

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว

      @@oglothenerd I remember Arch Linux being really fast. I screwed something up though and couldn’t boot. 🤦🏻‍♂️

  • @brianmwaniqi
    @brianmwaniqi หลายเดือนก่อน

    Great explanation as well as examples given for the application of bitwise operations

  • @ShermukhammadKarimov
    @ShermukhammadKarimov 11 หลายเดือนก่อน

    Thank you so much. You helped me with my university exams. Keep going. Well done.

  • @AFriendOfYours0
    @AFriendOfYours0 ปีที่แล้ว

    Thank you so much. I was trying to make sense of some code I came across on GitHub and I had no idea what was going on until I watched this. Didn't think I'd have to deal with bitwise operators in JavaScript haha. Loved the simple explanation and the lighting/graphics.

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว +1

      They are definitely quite confusing if you haven’t seen them before. Even if you have it can take a little while to work out what is actually doing.

  • @nazarinebeats599
    @nazarinebeats599 ปีที่แล้ว

    Im confused, at 4:06 the output is can read, but it looks to me that the result form the bit and should not match so I expected to see 0 ?

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว +1

      I don't think I explained that well in this video. As one of the other comments points out (see pinned) for & operator if both bits are 1 then it will equal 1, if both bits are 0 it will equal zero. If they are both different it will be 0.
      So our user permissions are set to 6, which is 110 in binary.
      The read permission is 4 which is 100.
      If you do 110 & 100 you will get 100, which is why you can do:
      if (userPermissions & READ_PERMISSION) == READ_PERMISSION:

  • @Ctrl_Alt_Elite
    @Ctrl_Alt_Elite ปีที่แล้ว

    I'm learning DSA atm, and came across a constant time solution for the Power of 2 problem that uses the AND bitwise operator
    AMAZING videos, watched both the binary & bitwise operators vids and learned a tonne! Thanks a lot! 😁

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว

      Thanks for sharing, I am glad my videos could help!

  • @luis.barragan
    @luis.barragan 2 ปีที่แล้ว

    This was a really professional video, straight to the point. Thanks for saving my day.

    • @alexhyettdev
      @alexhyettdev  2 ปีที่แล้ว

      You are welcome. I am glad you found it useful.

  • @mossabDiae
    @mossabDiae ปีที่แล้ว +2

    Great video Alex and well explained!
    I've been using Linux in a while and it's the first time to know the origin behind choosing those exact numbers for files permission, learned a lot!
    Thank you, subscribed.

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว +1

      Thank you! Yes I don't think many people realise where those numbers come from. It does seem quite arbitrary at first glance.

  • @abeldamtew2004
    @abeldamtew2004 8 หลายเดือนก่อน +1

    thanks for the awesome explanation and it is good to know when and how to use them.

  • @Tech-Dev
    @Tech-Dev ปีที่แล้ว

    Cheers for making this concept so easy to understand.

  • @blaxpow
    @blaxpow ปีที่แล้ว +1

    That's excellent content. Good explanation and video editing. +1 subscriber 🎉

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว

      Thanks Wesley! Glad to have you here, welcome 👋

  • @timi_t_codes
    @timi_t_codes ปีที่แล้ว

    You keep things so simple!! I would love to teach like you do.

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว +1

      Thank you for the kind words! I have never really taught anything before doing this channel. You never know what you can do!

  • @davidvillalobos3854
    @davidvillalobos3854 ปีที่แล้ว

    good video,very simple, straight to the point and the example of user permission was great and easy to follow. Thanks

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว

      Thank you, I am glad I could help!

  • @rcnhsuailsnyfiue2
    @rcnhsuailsnyfiue2 2 หลายเดือนก่อน

    Great video and excellent explanation 👍

  • @SaMcfc05
    @SaMcfc05 ปีที่แล้ว

    Thank you, this makes things a lot simpler to understand

  • @PauloGosen
    @PauloGosen 11 หลายเดือนก่อน

    Thank you Alex, I really learned something with this video. Keep it up

  • @hernanphillip334
    @hernanphillip334 ปีที่แล้ว

    Very very nice video sir, it has helped me out a lot!

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว +1

      That's great! I am glad it helped.

  • @DaveDemers69
    @DaveDemers69 ปีที่แล้ว +1

    Thank you, this helped a ton!

  • @dumebiubogu3445
    @dumebiubogu3445 7 หลายเดือนก่อน

    Thanks for the video. Not sure I am understanding the point of the 2's compliment. Does that give us the answer of ~5 ? So ~5 is -6?

    • @rockingshubzz3201
      @rockingshubzz3201 4 หลายเดือนก่อน

      If you use 2 complement it means ~5 (positive number) will be converted to -5

  • @kdt85
    @kdt85 ปีที่แล้ว +1

    what practical uses do the left and right bit shifts have?

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว +1

      They do have some mathematical uses.
      Doing x > 5 is equivalent of dividing x by 2 to the power of 5.
      They are also sometimes used for enum definitions which you can see here:
      stackoverflow.com/questions/3999922/why-use-the-bitwise-shift-operator-for-values-in-a-c-enum-definition
      If anyone has any other uses for them, I would be interested to know too!

    • @kdt85
      @kdt85 ปีที่แล้ว

      @@alexhyettdev thanks!

    • @JacksonBockus
      @JacksonBockus 8 หลายเดือนก่อน

      I use them all the time! Some hardware peripherals will store numerical values in weird places within registers, so to extract them and use them as numbers you need to perform a shift so that each bit is in the right place. Say we had an 8 bit register used by a temperature sensor with the lower three bits being for control and the upper five bits actually representing the temperature. You can extract the temperature by reading the value of the register and doing a left shift by three.

    • @kdt85
      @kdt85 8 หลายเดือนก่อน

      @@JacksonBockus thank you, yes I've come to realise they are widely used in embedded systems to directly access the pins by manipulating the register.
      Arduino for example used an extraction layer to turn pins on and off, if you use bit wise it's much faster and parallel

  • @amaniabid4476
    @amaniabid4476 ปีที่แล้ว

    thank you for this because I get it very easy when you explain it

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว

      You’re welcome! I am glad I could help.

  • @arhanghosh2744
    @arhanghosh2744 9 หลายเดือนก่อน

    Wonderfully explained. Great video

  • @bouzie8000
    @bouzie8000 10 หลายเดือนก่อน

    Informative and concise video. Good stuff

  • @Xander95X
    @Xander95X ปีที่แล้ว

    Wow, this video is great, super succinct and explained very clearly.

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว

      Thank you I am glad it helped!

  • @senriofthealexis3998
    @senriofthealexis3998 9 หลายเดือนก่อน

    Very concise and informative, thank you Alex

  • @wangxuerui9949
    @wangxuerui9949 9 หลายเดือนก่อน

    What an awesome video! Super helpful!!

    • @alexhyettdev
      @alexhyettdev  9 หลายเดือนก่อน

      Thank you, I am glad you liked it.

  • @artemmozharov2492
    @artemmozharov2492 10 หลายเดือนก่อน

    you can use shifts to multiply by 2pow n and there is also >>> operator or

  • @wypimentel
    @wypimentel 10 หลายเดือนก่อน

    Yeah, this topic was scary to me but you make it seems easy, thanks!

  • @jewsefjones
    @jewsefjones 6 หลายเดือนก่อน

    Nice vid I would of liked to see the 0 0 table row and some examples uses for the last few operators

  • @thoniasenna2330
    @thoniasenna2330 6 หลายเดือนก่อน

    great, many thanks from Brazil!

  • @vincentzacks9584
    @vincentzacks9584 9 หลายเดือนก่อน

    Excellent explanation, thanks mate!

    • @alexhyettdev
      @alexhyettdev  9 หลายเดือนก่อน

      You're welcome!

  • @civioarts
    @civioarts 17 วันที่ผ่านมา

    Great video! Thank you. Makes a lot of sense, especially the practical uses. However, I miss the logical shift (>>>). Amazing video nonetheless.

  • @zmo__6992
    @zmo__6992 5 หลายเดือนก่อน

    This a very wonderful video. thanks you!

  • @MrKruges
    @MrKruges 9 หลายเดือนก่อน

    This is so helpful. Thank you!

    • @alexhyettdev
      @alexhyettdev  9 หลายเดือนก่อน

      You're welcome!

  • @MrOvergaming
    @MrOvergaming 8 หลายเดือนก่อน

    I clicked on the like button before strarting the video!

  • @unidentifiedpy
    @unidentifiedpy 7 หลายเดือนก่อน

    damn man, you should've been my professor in college. now I'm gonna your student on every vid. cheers!

  • @MohammedRayaanPasha
    @MohammedRayaanPasha 6 หลายเดือนก่อน

    couldn't get better explanation!

  • @Dallascalo
    @Dallascalo 7 หลายเดือนก่อน

    Now it makes more sense!

  • @IndisputableConnoisseur
    @IndisputableConnoisseur ปีที่แล้ว +2

    this is gold

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว +1

      Thank you for the kind comment. I am glad it was useful.

  • @MoolsDogTwoOfficial
    @MoolsDogTwoOfficial 8 หลายเดือนก่อน

    This'll be helpful for going into raw mode (UNIX).

  • @Honest_Reply900
    @Honest_Reply900 8 หลายเดือนก่อน

    Very informative video, thanks and making and sharing it

  • @peaceomohimua1183
    @peaceomohimua1183 2 หลายเดือนก่อน

    U re a life saver.... God bless u

  • @moonasha
    @moonasha ปีที่แล้ว

    in unity we use these for layer masks. For whatever reason, layers are stored as a series of booleans in a 32 bit (i think) integer... so if we want to mask off layer 7, we have to bit shift 1 over 7 places, 1

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว

      That's interesting, thanks for sharing. I have been meaning to try out Unity.

  • @ShiloBuff
    @ShiloBuff 9 หลายเดือนก่อน

    Great explanation. Thanks

  • @jumbo999614
    @jumbo999614 7 หลายเดือนก่อน

    Please tech me this code
    Below is part of code that someone wrote for making dot matrix led 8x8 text scrolling
    byte bitmap[8][7];
    int numZones = sizeof(bitmap) / 8; // One Zone refers to one 8 x 8 Matrix ( Group of 8 columns)
    int maxZoneIndex = numZones - 1;
    int numCols = numZones * 8;
    // Converts row and colum to bitmap bit and turn it off/on
    void Plot(int col, int row, bool isOn)
    {
    int zone = col / 8;
    int colBitIndex = x % 8;
    byte colBit = 1

  • @o.fm.a5573
    @o.fm.a5573 2 หลายเดือนก่อน +1

    Why is 1 negative and 0 positive? I find it confusing 😅

    • @theEtch
      @theEtch 2 หลายเดือนก่อน

      because it's positive by default. the first bit is reserved for that I think.

    • @theEtch
      @theEtch 2 หลายเดือนก่อน

      as it's a signed byte

  • @moishie20
    @moishie20 9 หลายเดือนก่อน

    Thanks. Great video

  • @raxmax1421
    @raxmax1421 6 หลายเดือนก่อน

    very helpful, thank you

  • @kevinpellerin6715
    @kevinpellerin6715 ปีที่แล้ว

    Programming can be so high level, coming from microprocessors, its a little hard to not have to think about registers and interrupts.

  • @Ivanesenses
    @Ivanesenses 5 หลายเดือนก่อน

    thanks Rayan!

  • @kevinbatdorf
    @kevinbatdorf ปีที่แล้ว

    What are some common use cases for the last three you mentioned? ~ >

  • @bijjepurushotham7667
    @bijjepurushotham7667 9 หลายเดือนก่อน

    nice explanation

  • @shinkansen1907
    @shinkansen1907 หลายเดือนก่อน

    thanks

  • @robertvalentic4939
    @robertvalentic4939 หลายเดือนก่อน

    also good for networked games

  • @oreokarail
    @oreokarail ปีที่แล้ว

    Don't stop. There's a long way to go...

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว

      Yes it is definitely a long journey!

  • @hariram5654
    @hariram5654 3 หลายเดือนก่อน

    Respect from INDIA😇

  • @oglothenerd
    @oglothenerd ปีที่แล้ว +1

    I am needing to use them because I am making a voxel game.

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว +1

      That’s awesome. I have had “make a game” on my todo list for a long time. One of these days.

    • @oglothenerd
      @oglothenerd ปีที่แล้ว +1

      @@alexhyettdev Highly recommend Rust with the Bevy engine!

    • @SurajAbdullai
      @SurajAbdullai ปีที่แล้ว

      @@alexhyettdev Hi pls my account got banned and i need your help

  • @UnknownGamer-lw7zp
    @UnknownGamer-lw7zp 4 หลายเดือนก่อน

    Tq

  • @endribehari6645
    @endribehari6645 หลายเดือนก่อน

    You can a and b not 6 and 7

  • @hydrotd
    @hydrotd หลายเดือนก่อน

    came for shift

  • @realdragon
    @realdragon ปีที่แล้ว +16

    I discovered using bitwise operators is faster than dividing by 2 for floats

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว +4

      Good to know! Thanks for sharing.

    • @leonardeuler4
      @leonardeuler4 10 หลายเดือนก่อน

      Which language?

    • @realdragon
      @realdragon 10 หลายเดือนก่อน

      @@leonardeuler4 C

    • @Debianguy31
      @Debianguy31 10 หลายเดือนก่อน

      ​@@leonardeuler4any Language

    • @martinfinch5011
      @martinfinch5011 9 หลายเดือนก่อน +1

      Also multiplying by 2 using the bit shift left operator is faster as well I believe

  • @seanfull7123
    @seanfull7123 ปีที่แล้ว

    Teach my class plz

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว

      Is your teacher not very good, or just boring? 🤣

  • @meerkatpowergaming9412
    @meerkatpowergaming9412 ปีที่แล้ว

    This video is a bit loaded for someone who is truly a beginner.

    • @alexhyettdev
      @alexhyettdev  ปีที่แล้ว

      Noted. I will try and do some more videos for true beginners in the future.

    • @meerkatpowergaming9412
      @meerkatpowergaming9412 ปีที่แล้ว

      @@alexhyettdev Yeah I just find it truly hard to find resources for others on this specific subject. Even 10 years ago.