码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 位运算符讲解


    目录

                                                    与(&)

                                                    或(|)

                                                    非(~)

                                                    异或(^)

                                                    移位运算符

                    ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        1.>> 右移 

                    ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​ 2.<<左移


    最近接触了位运算符,我认为位运算符在一些题中的使用是很巧妙得,而且它也是算是一个入门算法。

    位运算符有,与,或,非,异或,移位运算符

    位运算符实际是采取二进制进行运算,

                                                    与(&)

                 两个二进制操作数对应位同为1 结果位 才为1,其余情况为0;

       10进制数        15            二进制    00001111

                              14                          00001110

    15&14=  14(00001110)

    1. # include <stdio.h>
    2. int main()
    3. {
    4. printf("%d",14&15);
    5. return 0;
    6. }

                                                    或(|)

                      两个二进制操作数对应位只要有一个为1 结果位 就为1,其余情况为0

     10进制数        15            二进制    00001111

                            14                           00001110

    15|14=15(00001111)

    1. # include <stdio.h>
    2. int main()
    3. {
    4. printf("%d",14|15);
    5. return 0;
    6. }

                                              非(~)

                  一个二进制操作数,对应位为0,结果位为1;对应位为1,结果位为0;

    取反后得到的是原码   而进行存储时是存储的补码,得到补码的过程要先得到反码

     10进制数       8           二进制    0000 1000

          (~8)=-9(1000 1001)

       取反后原码:1111 0111

       取反后反码:1000 1000(除了符号位 其余位都进行取反操作)

       取反后补码:1000 1001  补码(因为为负数所以加一) 如果为正数不需要进行加一 

                 

    1. # include <stdio.h>
    2. int main()
    3. {
    4. printf("%d",~15);
    5. return 0;
    6. //00001000
    7. //11110111 取反原码
    8. //10001000 取反反码
    9. //10001001 补码(因为为负数所以加一)
    10. }

                                                       异或(^)

                同为假,异为真

    10进制数        15            二进制    00001111

                            14                           00001110

    15^14=1(0000001)

    1. # include <stdio.h>
    2. int main()
    3. {
    4. printf("%d",14^15);
    5. return 0;
    6. }

                             移位运算符

    1.>> 右移 

     按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。(高位用符号位补充-------正数右移还是正数    负数右移还是负数)

    语法:需要移位的数字number >> 移位的次数

    13>>2=3

    13的二进制位(1101)向右移动两位变成3(11)

    性质(在整数下):右移相当于用该数除以2的移位次数再向下取整

    13/(2^2)向下取整为3

    2.<<左移

    将一个数的二进制同时往左移位,低位用0补充

    5<<1=10

    5(101)向右移动1位 (1010)=10、

    性质同上右移

    是5*2^1=10

  • 相关阅读:
    HTML期末作业,基于html实现中国脸谱传统文化网站设计(5个页面)
    【LeetCode】Day126-正则表达式匹配
    基于深度Q学习的雅达利打砖块游戏博弈
    第23章_瑞萨MCU零基础入门系列教程之ADC与DSP
    Windows系统提示“ping”不是内部或外部命令,也不是可运行的程序或批处理文件解决办法
    jQuery 在图片和文字中插入内容(多种情况考虑)
    jsp 技术
    【牛客网题目详解】Q-前天是哪一天
    va_list 、va_start、va_arg 和 va_end的含义和用法
    树的邻接表存储法
  • 原文地址:https://blog.csdn.net/m0_61469860/article/details/122396538
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号