问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

位运算详解

发布网友 发布时间:2022-10-03 12:59

我来回答

2个回答

热心网友 时间:2023-10-10 11:18

在深入了解各种位运算之前,需要先了解补码的概念。

原码:计算机中对数字的二进制定点表示方法,这种表示方法在数字前面加上一个符号位,“1”代表这个数是负数,“0”代表这个数是正数,除符号位之外,其余位表示该数字的值。(注意:如果明确定义为无符号整数,那么将不存在符号位,本文主要讲述的是有符号整数的情况)

先举一个简单的例子:假设一个数在内存中占8个比特位,那么在内存中一个数就用八个二进制位来表示,“1”用原码来表示就是 00000001,“-1”用原码来表示就是10000001。

这里就出现一个问题,如果用原码来表示“0”的话,会出现+0和-0两种情况,明显不可行,因此 计算机中一律是用补码来表示和存储的 ,与原码相比,使用补码可以将符号位和数值域统一处理,加法和减法也可以统一处理。那补码是什么?

在一个时钟中,时针9要变成6,可以表示为9-3,也可以表示为9+9=12+6(12为一圈)。对于计算机来说,一个数也是有一个有效范围的,在该范围内可以把加减操作都转化为加法操作,那么对于减法来说就需要有一个数补上加减之间的数差,这个数就是补数,对于计算机内部来说,这就是补码。

求补码有三种情况:正整数、负整数、零。

先看第一种情况--正整数:

(假设一个数用八个二进制位来表示)对于一个正整数来说,它的补码和原码是完全相等的,“1”的补码也是00000001,“0”的补码也是00000000。

第二种情况--负整数:

(假设一个数用八个二进制位来表示)对于一个负整数来说,它的补码等同于 该负整数的原码除符号位之外的所有位进行取反加一 ,也就是对后七位取反再加一,例如:对于数字“-1”来说,它的原码是10000001 ,取反加一之后为11111111,所以"-1"的补码就是11111111。

第三种情况--零:

(假设一个数用八个二进制位来表示)“0”用原码表示有两种方式:“00000000”和“10000000”,用补码表示只有唯一的情况,因为“10000000”转换为补码为“100000000”,而在这里一个数只能用八个二进制位表示,所以首位的1被丢弃,因此“0”的补码为“00000000”。

那么已知一个十进制数的补码怎么求出这个数呢? 对这个补码再求补码,得出的二进制数转换为十进制 。

例如:一个数的补码为“00001010”,该补码的补码是它本身,所以二进制转换为十进制为2^1+2^3=10;一个数的补码为“11110111”,从符号位可知这个数是负数,所以该补码的补码是“10001001”,转换为十进制(符号位不计)为-(2^0+2^3)=-9。

对于任何程序中的数据在计算机内存都是以二进制的形式来存储的,如果我们需要对一个整数的二进制位进行运算操作,就需要用到位运算了。通用的位运算有六种,下面将一一介绍。 (以下例子均假设一个数用8个二进制位表示且为有符号整数)

A&B:把A、B的二进制的每一位进行比较, 相同且为1则为1,不同则为0 ,返回一个二进制结果。这通常用于二进制数的取位操作,例如C&1就可以知道C的第一个二进制位是0还是1。

例子:1)5&3

2)-3&5

A|B:把A、B的二进制位的每一位进行比较, 相同且为0则为0,其余情况为1, 返回一个二进制结果。通常用于无条件赋值,例如C|1 返回的结果就是C+1的值。

例子:1)3 | 5

2)-3 | 5

~A:把A的每一个二进制位都进行取反, 1变成0,0变成1, 返回一个二进制结果。

例子:1)~5

2)~ -3

A^B:把A、B的每个二进制位进行比较, 相同为0,不同为1, 返回一个二进制数。两次异或会变成原来的值(A^B)^B=A,故异或可用于一般的加密。

例子:1)5 ^ 3

2)5 ^ -3

A<<n:将A的每一个二进制位左移n位,并在右边补n个零,相当于是A乘以2的n次方,等价于A=A*(2^n),但左移的运算速度较快。

例子:1)4<<2

2)-3<<2

A>>n:将A的每一个二进制位右移n位,并在左边补n个0(正数)或者n个1(负数),等价于A=A/(2^n),但右移的运算速度较快。需要注意的是,使用右移运算符要在数据不丢失的情况下使用,如果右移到有效位全为0了再右移就没有意义了。

例子:1)4>>2

2)-8>>2

至此,位运算的知识点全部完毕

热心网友 时间:2023-10-10 11:19

位运算?

其实,也就是“逻辑运算”。

上过高中的,都明白这些。

学计算机的人,一般都没有好好学习。

他们弄不懂“逻辑运算”的意思,就自己编造一个词“位运算”。

其实也就是:与、或、非、异或。

仅此而已,没有什么可详解的。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
"多难兴邦"这个词,让我们懂得了什么? uc怎么进入阅读模式 进入阅读模式方法介绍 uc怎么进入小说阅读模式 uc浏览器设置阅读模式-uc浏览器设置阅读模式方法 uc电脑阅读模式怎么设置电脑上UC浏览器的阅读模式怎么打开 微信怎么判断对方把你拉黑并且删除了,还是只是拉黑了? 公司诉讼由哪个法院管辖?公司诉讼管辖确定的理论依据? 笔记本电脑开机无法进入系统笔记本电脑开机后无法进入系统 从深圳到乌镇玩三天,花销最少是多少?越少越好,如果有个计划就更好乐 马上快过年放假了,第一次去见岳父,送茅台好还是五粮液好? 如何用位运算实现整数的加减法 小米1元750M流量包如何购买?小米流量包购买教程 笔记本电脑桌面图标只要一点击就总是提示删除快捷方式,系统从装过几 电动车解速后还能恢复吗 我的子宫从后置变前位了? BET吸附法测试前为什么要进行漏气检查?如有漏气应如何处理 bet预处理目的 BET测二氧化碳吸附的步骤 子宫后位怎么容易怀孕 子宫后位什么姿势最容易怀孕 子宫后位怎样的姿势容易怀孕 4、5x10方杉长度规格 右手视频怎么免费看 上海东林方杉林业发展有限公司怎么样? 梦到买帽子意味着什么? 八方杉北方能种植么 徐州停车微信公众号收费合法吗?- 问一问 近似数精确到哪一位怎么看 近似数精确到哪一位的看法介绍 什么是近似数 近似数介绍 广发银行刷pos机,为什么不出凭条 用位运算实现加倍操作,写出相应代码 用位运算实现n^2 小米手机,桌面最下面的是什么应用?点开后就是电脑的桌面了,叫什么名字啊? 八卦岭地铁站是几号线地铁-是属于哪个区-八卦岭地铁站末班车时间表 豆瓣怎么把别人从黑名单里拉出来? 安逸花借钱合法吗 魅族美化主题联网权限怎么改拒绝 海贼战队豪快者的音乐原声 榴莲的d101和d197有什么区别呢? d101和d197榴莲的区别在哪里呢? d101和d197榴莲有什么区别啊? 榴莲的d101和d97有什么区别啊? 2500W的设备需要维持30分钟,谁给个UPS规格和价格! 决定UPS电源价格的价格因素有哪些 2022年初级会计考试大纲什么时候出来 裁断机 哪家好? 冲割一体机好用还是分体机好用 光伏压块冲切一体机是具体干啥的 梦见自己在给自己的棺材里面放衣服 梦见自己的衣服被人放进死了多年的人棺材旁自己重新拿出来