首页 > 其他分享 >位运算笔记

位运算笔记

时间:2024-10-21 20:23:45浏览次数:7  
标签:0000 运算 0010 补码 lowbit 0101 笔记 1010

位运算笔记

对二进制数进行直接操作:

基础操作:

例:
 a=0000 1101;
 b=0011 0101;
 
 与:a&b==0000 0101;//当两个数的第i位都为1时,a&b的第i位才为1
 
 或:a|b==0011 1101;/*当两个数的第i位都为0时,a|b的第i位才为0
    或者说两个数的第i位其中至少有一个为1,对应的a|b的第i位就为1*/
 
 异或:a^b==0011 1000;//当两个数的第i位相同时,a^b的第i位为0,不相同则为1
 
 取反:~a==1111 0010;//前置运算符~,对一个数的所有位进行取反操作 1->0 0->1
 
 取k=2时:
 左移:a<<k==0011 0100;//将a朝左边移动k位,超过最高位次的数直接舍弃,增加的低位以0补上
 右移:b>>k==0000 1101;//将b朝右边移动k位,超过最低位次的数直接舍弃,增加的高位以0补上

备注:

关于 ^ 运算符有如下操作

结合律: (a ^ b) ^ c == a ^ (b ^ c)

对于任何数 x,都有 x ^ x = 0x ^ 0 = x

自反性:a ^ b ^ b = a ^ 0 = a

lowbit()操作:

lowbit(a)定义为:非负整数 a 在二进制表示下最低位的 1 及其后面的所有的 0 的二进制所构成的数

例:
 a=0101 0011;//a=83
 b=1100 0000;//b=192
 lowbit(a)==1;//0000 0001
 lowbit(b)==64;//0100 0000

lowbit()的原理:

int lowbit(int x){
	return x&-x;
}

x 对于 -x 进行与操作

-x 等价于 ~x+1 即对x补码

例:
 a=1010 0000;
 ~a=0101 1111;
 ~a+1=0110 0000;
 a&(~a+1)=0010 0000;

补充:

原码、反码、补码操作:

例:a = 1010 0110

a 的原码为其本身,即1010 0110

a 的反码就是对 a 的每一位进行取反操作,和 ~a 相同,即0101 1001

关于补码:

任何大于0的数的补码都等于它的原码,即它本身

任何小于0的数的补码都等于它的反码再加上 1

a 为大于0的数,-a则是小于0的数

备注:

x = 0101 0010//82~x = 1010 1101//173 存在等式 x + (-x) = 0

那么 -x = 0 - x ,此时内部进行的操作为 0000 0000 - 0101 0010

显然0000 0000需要向前借位才能进行减法操作

此时有:

1 0000 0000 - 0101 0010 = 1010 1110//174

在8位二进制计算中,能表示的最大值为255,这是因为 0 占去了一个位置

所以说在计算 x 的负值时,我们需要跳过多出的0,从而有:

-x = ~x+1

标签:0000,运算,0010,补码,lowbit,0101,笔记,1010
From: https://www.cnblogs.com/dianman/p/18490280

相关文章

  • HTML笔记
    什么是网站:网站其实是由一个个的网页构成的网页就是放在服务器上面的一个文件我们浏览网页的时候这个文件里的所有代码会被下载到我们本地的电脑,然后再由浏览器解析,渲染而网站就是一个绑定了域名的文件夹,该文件夹中可以包含子文件夹以及各种各样的文件,这些文件都可以通......
  • 【位运算】——揭秘位运算:高效解题的关键技巧
    文章目录常见的运算总结五道基础位运算相关题目位1的个数比特位计数汉明距离只出现一次的数字——基础使用只出现一次的数字|||——这题是最后一题的简单版本面试题01.01.判定字符是否唯一丢失的数字只出现一次的数字||面试题17.19.消失的两个数字总体总结:常见的运算......
  • C++研发笔记4——C语言程序设计初阶学习笔记2
            从今天开始我们开始第二模块初识C语言的学习,在本模块中我们将会涉及到一下14个内容:什么是C语言、第一个C语言程序、数据类型、变量、常量、字符串+转义字符+注释、选择语句、循环语句、函数、数组、操作符、常见关键字、define定义常量和宏、指针......
  • 《微分几何讲义(陈省身)》读书笔记 第二章 多重线性代数
    第二章多重线性代数Note:本文默认了基本的向量空间和矩阵的相关知识。本文中所有的向量空间默认是有限维的,且定义在一个域\(\mathbb{F}\)上。本文采用Einstein求和约定。§1张量积[Def1.1]对于向量空间\(V_1,\cdots,V_r\)和\(Z\),若映射\(f:V_1\times\cdots\timesV......
  • 《程序员修炼之道》读书笔记1
    1.“我的源码让猫给吃了”在工作过程中,出现突发情况,无论是因为磁盘垮了,没有备份,还是交付晚了,都属于是我们个人失误,应该坦率的承认错误,并提出解决方案,向老板和客户解释“我的源码让猫给吃了”没有任何意义。其次,在代码编写工作中,作为成熟的程序员,我们应当知道自己所能承受的极限在......
  • TS学习笔记(三)
    TS语言继承了JS的类型设计,js将值分为8中类型:boolean、string、number、undefined、null、symbol、bigint、object。注意,上面所有类型的名称都是小写字母,首字母大写的Number、String、Boolean等在js语言都是内置对象,而不是类型名称。 bigint与number类型并不兼容constx:bigi......
  • 【论文阅读笔记】An Image is Worth 1/2 Tokens After Layer 2: Plug-and-Play Infere
    论文地址:https://arxiv.org/pdf/2403.06764代码地址:https://github.com/pkunlp-icler/FastV目录IntroductionInefficientVisualAttentioninVLLMsPreliminaries两种分数结果分析FastVOverviewRe-rankandFilteringmodule(core)ThoughtIntroduction现象(问题):大多数LVL......
  • IIC通讯协议笔记
    iic通讯协议片上外设iic主发送器主发送器通讯过程发送开始位后等待EVT5,发送从机(slave)地址等待EVT6和发送要写入从机的寄存器等待EVT8,发送数据等待EVT8_2片上外设主接收器发送过程接收过程......
  • mongodb 查询条件,查询逻辑对照表,逻辑运算符,正则表达式匹配查询,排序,分页/巧分页,更新操
    mongodb查询条件,查询逻辑对照表,逻辑运算符,正则表达式匹配查询,排序,分页/巧分页,更新操作符,更新单个/多个文档,删除文档,批量插入,$type操作符,内嵌文档和数组查找修改1.条件查询SQLMQLa=1{a:1}a<>1{a:{$ne:1}}a>1{a:{$gt:1}}a>=1{a:{$gte:1}}a<1{a:{$lt......
  • 十月十四日《程序员修炼之道:从小工到专家》阅读笔记1
    软件开发的复杂性:阅读这部分内容后,我意识到软件开发的复杂性远远超出了编码本身。它涉及到项目管理、团队协作、需求理解等多个方面。这让我认识到,作为一个程序员,需要具备更全面的技能和视野。持续学习的重要性:书中强调了持续学习和适应新技术的重要性。在技术日新月异的今天,只有......