开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2866|回复: 3
收起左侧

[易源码分享] 编程之道之位运算

[复制链接]
发表于 2010-2-1 13:45:03 | 显示全部楼层 |阅读模式   广东省珠海市
为了更为直观,本文以易语言为例,vc++为辅。
首先了解一下位运算的几个命令(以下备用):
易语言                            vc++
位或 (, )      |位与 (, )      &位取反 ()      ~ 位异或 (, )     ^右移 (, )      >>左移 (, )      <<
合并整数 (, )    合并短整数 (, )

好,现在开始说说什么是位运算:
我们都知道程序中的所有数在计算机内存中都是以二进制的形式储存的(不明白可以参见
<计算机中的信息表达之数制>),计算机位运算就是以“二进制位”为基础进行逐位运算。
废话不多说,实例开始:
  
左移:
vc++方式:a<<=1;
如将 b移x位结果为y表示为:   y=2^x*b(^符号代表乘方)
反之右移为:y=b÷2^x
注意:公式是自己总结的,没有进行严格检查.
如果右移出来得小数,那就直接取整得0
位取反()
这个不用说吧,0变成1,1变成0
如:0101101110  位取反就是  1010010001
注意:是二进制哦
位与和位或
简易记法:
位与(1,1)=1,位与(1,0)=0,位与(0,0)=0,规则为“有0则0”;位或(1,1)=1,位或(1,0)=1,位或(0,0)=0,规则为“有1则1”;
详细的再这就说一下:
首先明确什么是 补码、反码和原码(本空间有介绍)
然后按照 10进制数的 原码进行简易记法中的计算(好像后面有介绍)
位异或
  
位异或(1,1)=0,位异或(1,0)=1,位异或(0,0)=0,位异或(0,1)=1,规则为“同0异1”;
  
好,出示几个例子:
vc++例子:
#include "iostream.h"
void main(){ int a=2;   //定义一个整型变量 a并赋值为2 a^=0;      //对a进行位异或运算 cout<<a<<endl;   //输出一个运算结果a,其值为2,过程如下:
/* 2的补码为10    0还是0(前面的一大堆我省略了)
  按照位异或的原理:同0异1
  形式如下:
  10^00= 10(注意:10是二进制的哦)
  而二进制的10就等于十进制的2
  所以输出的值是2*/
/*如果说上面的还没看懂,就看看这种表现形式:
  十进制   二进制     备注
  2    1 0      便于理解,都取两位
  0    0 0      前面一堆全去掉了
      ↓ ↓      ---------→位运算开始
      1   0      同0,异1(竖排看)
  2    }
  
那么这里输出的数值就是2
好了有关位运算的事 就说到这里吧^
如果回帖多的话就考虑 扩充写内容,完善一下,少就这样吧,看到就是得到了,没看到就拉倒吧
  
都看到这里了,不留言可太不厚道了啊~

结帖率:43% (9/21)
发表于 2011-11-15 22:21:44 | 显示全部楼层   浙江省台州市
{:3_232:}{:3_232:}{:3_232:}{:3_232:}iI I 不懂
回复 支持 反对

使用道具 举报

结帖率:43% (9/21)
发表于 2011-11-19 10:34:20 | 显示全部楼层   浙江省台州市
我学这么复杂,你说,我能发财吗
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 2011-11-19 11:22:58 | 显示全部楼层   北京市北京市
看不懂!!!!!!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表