在Excel中实现位运算

我们知道,计算机使用的是二进制计数法。也就是说,在计算机中的所有信息都是使用二进制来存储和处理的。

下表列出了我们熟悉的十进制数及与其相对应的二进制数:

位运算规则

在位运算中,“按位与”运算(AND运算)分别按位比较两个相应的数字(0或1),当且仅当这两个数字都为1时,结果才为1,如下式所示:

可以看出,实现“按位与”运算,就是将对应位置的数相乘。因此,从右自左的第1个位置是1*1=1,第2个位置是0*1=1,等等,最后得到结果。

除了“按位与”运算外,还有按位或(OR)、异或(XOR)、蕴含(IMP)、相等(EQ)和非(NOT)运算,它们都有不同的运算规则。例如,对于OR运算来说,当两个数字至少有一个为1时,结果为1,如下式所示:

同理,可以看出,实现“按位与”运算,就是将对应位置的数相加,结果为正数就是1,结果为零就是0。因此,从右自左第1个位置是1+1=2,即为1,第2个位置是0+1=1,就是1,等等,最后得到结果。

其他的位运算规则可以参阅相关资料,下面主要以“按位与”和“按位或”为例,解如何在Excel中实现位运算。

将十进制数转换成二进制数

有时候,在Excel工作表中实现位运算是非常有用的,然而,Excel并没有直接用于位运算的函数,这就需要我们组合一些函数来实现位运算功能。

下面,以处理0至255之间的十进制数为例。

在将0至255之间的十进制数转换成二进制数时,需要的二进制数的位数是8位。例如,十进制数0的二进制数表示为:

00000000

十进制数255的二进制数表示为:

11111111

可以使用下面的公式来获得十制数相对应的二进制数的每一位(0或1):

=MOD(INT(十进制数/(2^(二进制数所处的位置值-1))),2)

也就是说,要求二进制数中的其中一位,先求2对该位所在的位置值减1的幂,然后由其十进制数除以所求幂的结果,对求得的结果取整,并作为MOD函数的参数求其对2的余数,即为该位所在的二进制数(0或1)。

下图1演示了在Excel工作表中使用公式将十进制数222转换成二进制数11011110的过程。

图1

在将十进制数转换成二进制数后,我们可以按照位运算的规则对两个或多个二进制数进行位运算。

在Excel中实现位运算

下图2展示了“按位与”运算,并将二进制数结果转换回十进制数。

图2

下图3展示了“按位或”运算,并将二进制数结果转换回十进制数。

图3

可以看出,将二进制数转换成十进制数,只需将对应的位乘以2的该位所在位置减1的结果次方,然后将所有结果相加即可。

使用SUMPRODUCT函数与上面的公式相结合,可以省去上面介结的一些中间步骤,即在一个公式中就将二个十进制数转换成二进制数,将它们“按位与”或者“按位或”,最后将位运算的结果转换成十进制数的结果。

首先,创建一个命名公式。

名称:b

引用位置:={1;2;4;8;16;32;64;128}

即用于转换的数字常量组成的数组。第1个位置值使用2^(1-1),第2个位置使用2^(2-1),第3个位置使用2^(3-1),为8位数的每一个位执行这个操作。

下面是我们的SUMPRODUCT公式,执行两个十进制数(dec1和dec2)的“按位与”运算:

=SUMPRODUCT(b * MOD(INT(dec1/b),2) * MOD(INT(dec2/b),2))

下面的公式执行“按位或”运算:

=SUMPRODUCT(b * SIGN(MOD(INT(dec1/b),2) + MOD(INT(dec2/b),2)))

公式中使用SIGN函数使结果数字值不会大于1。

因此,上文中的图2和图3所示的运算都可以使用一个公式来完成,如下图4所示。

图4

结语

位运算可以用来实现很多令人惊叹的电子表格设计,解决很多具有挑战性的问题,待我进一步学习后与大家分享。



  • 鍦‥xcel涓疄鐜颁綅杩愮畻
    绛旓細鍙互鐪嬪嚭锛瀹炵幇鈥滄寜浣嶄笌鈥濊繍绠楋紝灏辨槸灏嗗搴斾綅缃殑鏁扮浉涔銆傚洜姝わ紝浠庡彸鑷乏鐨勭1涓綅缃槸1*1=1锛岀2涓綅缃槸0*1=1锛岀瓑绛夛紝鏈鍚庡緱鍒扮粨鏋溿傞櫎浜嗏滄寜浣嶄笌鈥濊繍绠楀锛岃繕鏈夋寜浣嶆垨锛圤R锛夈佸紓鎴栵紙XOR锛夈佽暣鍚紙IMP锛夈佺浉绛夛紙EQ锛夊拰闈烇紙NOT锛夎繍绠楋紝瀹冧滑閮芥湁涓嶅悓鐨勮繍绠楄鍒欍備緥濡傦紝瀵逛簬OR杩愮畻鏉ヨ锛屽綋涓...
  • 濡備綍鐢EXCEL杩涜鐧惧垎浣嶈繍绠?
    绛旓細鍦˙1杈撳叆=PERCENTILE(E1:E10,0.1) 寰楀埌鐨鏄10鐧惧垎浣嶆暟銆傚湪B2杈撳叆=PERCENTILE(E1:E10,0.9) 寰楀埌鐨勬槸绗90鐧惧垎浣嶆暟銆侰2鍏紡锛=ROUNDUP(RANK(B2,$B$2:$B$21,1)/COUNT($B$2:$B$21)/0.2,0)F2鍏紡锛=ROUNDUP(RANK(E2,$E$2:$E$21)/COUNT($E$2:$E$21)/0.2,0)...
  • 鍦‥xcel涓鎸夋潯浠剁瓫閫夊苟姹備腑浣嶆暟鎬庝箞鎿嶄綔?
    绛旓細1. 棣栧厛锛鍦‥xcel涓閫夋嫨闇瑕佺瓫閫夌殑鏁版嵁鑼冨洿銆傚彲浠ヤ娇鐢ㄦ潯浠剁瓫閫夋潵鏍规嵁鎸囧畾鐨勬潯浠惰繃婊ゆ暟鎹備緥濡傦紝鍙互浣跨敤绛涢夊櫒鏍规嵁鐗瑰畾鍊笺佽寖鍥存垨鏂囨湰杩涜绛涢夈2. 閫夋嫨“鏁版嵁”閫夐」鍗★紝鐒跺悗閫夋嫨“鎺掑簭”鍔熻兘銆傚湪鎺掑簭瀵硅瘽妗嗕腑锛岄夋嫨“闄嶅簭”鎺掑垪鏁版嵁锛屼互渚垮悗缁殑绛涢夋搷浣滄洿鍔犳柟渚裤3. 鐐瑰嚮...
  • excel2010涓笉鑳瀹炵幇鐨勮繍绠绗
    绛旓細excel2010涓笉鑳藉疄鐜扮殑杩愮畻绗﹀寘鎷細1銆佹ā杩愮畻绗︼紙%锛夛細excel2010涓笉鏀寔姹傛ā杩愮畻锛屼絾鍙互浣跨敤鍏朵粬鍑芥暟鏉ュ疄鐜扮被浼肩殑鍔熻兘锛屽MOD鍑芥暟銆2銆佽嚜澧炶繍绠楃锛++锛夊拰鑷噺杩愮畻绗︼紙--锛夛細excel2010涓病鏈夎嚜澧炲拰鑷噺杩愮畻绗︼紝浣嗗彲浠ヤ娇鐢ㄥ叾浠栧嚱鏁版垨鍏紡鏉ュ疄鐜扮被浼肩殑鍔熻兘銆3銆佷綅杩愮畻绗︼細excel2010涓病鏈変綅杩愮畻绗︼紝...
  • excel琛ㄦ牸涓皬鏁浣嶈繍绠璇樊銆傛兂淇濈暀鏁存暟,鍙槸鍚堣鏁版绘槸鏈夎宸甠鐧惧害鐭...
    绛旓細瑕侀杭鍏ㄩ儴閮藉彇鏁村悗鍐杩愮畻锛岃繖鏍峰嚭鏉鐨鏁版嵁灏变笉浼氭湁璇樊浜嗐俽ound锛圓1,0锛:鍥涜垗浜斿叆 roundup(A1,0)锛氭棤鏉′欢鍚戜笂杩涗綅 rounddown(A1,0)锛氭棤鏉′欢鑸嶅幓灏忔暟浣嶆暟銆
  • excel琛ㄦ牸涓皬鏁浣嶈繍绠璇樊
    绛旓細鏈夊嚑椤瑰仛闄ゆ硶鍚庣殑缁撴灉鏄3锛堣缃负淇濈暀鏁存暟锛夛紝527锛堣缃负淇濈暀鏁存暟锛...鍓嶅嚑椤规秹鍙杩愮畻鐨浣跨敤鍙栨暣鍏紡=INT(B2/C2)鎴栧洓鑸嶄簲鍏ュ叕寮=ROUND(B2/C2,0)鍗冲彲:姣斿=INT(10/3),缁撴灉涓3;=ROUND(10/2.1,0),缁撴灉涓5;杩欐牱鍚堣灏卞噯纭簡.
  • excel杩愮畻绗︿腑 鍖呮嫭 閫昏緫杩愮畻绗﹀悧
    绛旓細鍦‥xcel涓锛屽寘鍚枃鏈杩愮畻绗︺佹瘮杈冭繍绠楃銆佸紩鐢ㄨ繍绠楃銆佺畻鏈繍绠楃锛屼笉鍖呮嫭閫昏緫杩愮畻绗︺傜畻鏈繍绠楃锛+锛堝姞锛夈-锛堝噺锛夈伱楋紙涔橈級銆/锛堥櫎锛夌瓑锛涙瘮杈冭繍绠楃锛氾紴锛堝ぇ浜庯級銆佲墺锛堝ぇ浜庣瓑浜庯級銆侊紲锛堝皬浜庯級銆佲墹锛堝皬浜庣瓑浜庯級銆=锛堢瓑浜庯級銆佲墵锛堜笉绛変簬锛夛紱鏂囨湰杩愮畻绗︼細&锛涘紩鐢ㄨ繍绠楃锛氾紝锛堥楀彿锛夈侊細锛堝啋鍙...
  • Excel涓鍋囧鏈変竴鍒楁暟瀛,鎸囧畾鏉′欢鍦ㄨ繖鍒楁暟瀛︿腑鎵浠ョ殑2涓緱鍒颁笅涓浣嶆暟瀛...
    绛旓細B2鍏紡锛=IF(A1=2,A2,"")涓嬫媺濉厖銆
  • 鍦╡xcel涓姹傜粷瀵瑰肩浉鍔犵殑鍑芥暟鏄粈涔?
    绛旓細璁$畻鏈鸿瑷涓紝姝f暟鐨浜岃繘鍒堕浣嶏紙鍗崇鍙蜂綅锛変负0锛岃礋鏁扮殑浜岃繘鍒堕浣嶄负1銆32浣嶇郴缁熶笅锛4瀛楄妭鏁帮紝姹傜粷瀵瑰艰〃杈惧紡锛歛bs(x) = (x >> 31) ^ x - (x >> 31)浠g爜涓竴鑸敤瀹瀹炵幇锛歞efine ABS(x) (((x) >> 31) ^ (x)) - ((x) >> 31)娉細" >> "涓" ^ "涓浣嶈繍绠绗︼紝" >> "...
  • 鍦‥xcel涓杈撳叆瓒呰繃15浣嶆暟瀛楁椂搴斿浣曟搷浣?
    绛旓細1. 浣跨敤绉戝璁℃暟娉曪細濡傛灉鏁板瓧瓒呰繃15浣嶏紝Excel閫氬父浼氫娇鐢ㄧ瀛﹁鏁版硶杩涜鏄剧ず銆備綘鍙互鍦ㄨ緭鍏ユ暟瀛楀悗锛岄夋嫨涓涓傚綋鐨勬牸寮忔潵鏄剧ず绉戝璁℃暟娉曘2. 浣跨敤鑷畾涔夋牸寮忥細浣犲彲浠ヤ负鍗曞厓鏍艰缃嚜瀹氫箟鏍煎紡锛屼互閫傚簲瓒呰繃15浣嶇殑鏁板瓧鏄剧ず銆鍦‥xcel涓锛岄夋嫨鍖呭惈鏁板瓧鐨勫崟鍏冩牸锛岀劧鍚庡彸閿崟鍑婚夋嫨鈥滄牸寮忓寲鍗曞厓鏍尖濄傚湪寮瑰嚭鐨勭獥鍙d腑...
  • 扩展阅读:1.3721e+10转换成号码 ... 一个唯一值匹配多个值 ... 用两个条件匹配一个值 ... vlookup if多条件查询 ... excel多条件判断取值 ... excel去除#na的方法 ... vlookup多个条件匹配 ... excel if and 多条件 ... excel运算优先级图 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网