从20世纪70年代末到80年代末,Digital Equipment的VAX计算机是一种非常流行的机型.它没有布尔运算AND和OR指令,只有bis(位设置)和bic(位清除)这两种指令.两种指令的输入都是一个数据字x和一个掩码字m.它们生成一个结果z,z是由根据掩码m的位来修改x的位得到的.使用bis指令,这种修改就是在m为1的每个位置上,将z对应的位设置为1.使用bic指令,这种修改就是在m为1的每个位置,将z对应的位设置为0. 为了看清楚这些运算与C语言位级运算的关系,假设我们有两个函数bi…
取模就是返回余数. 取模的作用主要是来取奇偶数来用的,奇数干嘛,偶数干嘛. 比较运算符: 赋值运算: 逻辑运算: 赋值的时候可以多个变量同时赋值 成员运算: in就是在不在的意思. 身份运算: 位运算: 二进制运算: &就是and运算 |或运算就是or 异或运算就是^,正好相反,相同为0,不通为1 按位取反运算~,取60的按位取反,就是0变成1,1变成0 所以~60=195,但是实际情况呢得到-61,都是负值 因为计算机都是按195-256=-61得到的值显示的负值 左移右移的应用场景 右移一位…
本文记录了不使用中间变量交换2个变量的value,很多的网络留言说是直接异或运算就可以了,而且效率很高,是真的吗? 这里简单的说一下我的环境:Win7 32位,Qt creator 5.4.1 编译器MinGW4.9.2 32bit 调试器:GNU GDB 7.8 关于这个问题,网络上面有很多的解释,3种方法,我这里给比较一下各自的优缺点,然后简单分析一下汇编代码,分析代码如下: #include <stdio.h> void swap1(int &a,int &b) { in…
今天看到一位大神的博客,深受感触.决定也发一篇博客,证明一下我还活着. 于是我翻看以前学习时做的一些笔记,整理了一下,得到了一个关于异或运算交换变量变量值的笔记. 首先来看下面三组表达式,看起来他们都能实现交换两个变量的值. a = a ^ b; b = a ^ b; a = a ^ b; a = a ^ (b = b ^ (a = a ^ b)); a ^= b ^= a ^= b; 可实际的情况是,前面2组表达式,在C.C++.Java中都能顺利完成变量值的交换.而第3组表达式,却只在C.C…
Problem Description 有个叫"猪头帮"的国家,采用一种简单的文法加密,他们所用的语言里面只有大写字母,没有其他任何字符:现在还知道他们加密的方法是:只用一个大写字母和原文进行异或运算生成密文.请你帮忙解开. Input 有若干组,每组输入有2行,第一行整数N表示有N个密文,接着一行有N个整数分别表示N个密文. Output 输出仅有大写字母组成的原文. Sample Input 30 17 6 9 8 3 0 1 6 7 4 5 10 11 8 9 14 15 12…
原文:位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<) 先知道这两个二进制数据的特点:   1=0000 0000 0000 0000 0000 0000 0000 0001 -1=1000 0000 0000 0000 0000 0000 0000 0001 1.最高位(首位)表示正负(0为正,1为负) 2.最低位(末位)表示奇偶(0为偶,1为奇) 一.按位取反(~) 十进制1按位取反后=? 分析: 1. 十进制1转为二进制为:1= 0000 0000 0…
异或运算的基础有点忘记了 先介绍一下..2个数异或 就是对于每一个二进制位进行位运算 具有2个特殊的性质 1.一个数异或本身恒等于0,如5^5恒等于0: 2.一个数异或0恒等于本身,如5^0恒等于5. 3 满足交换律 1.交换数字 这个性质能利用与交换数字 先考虑加减改变法. a=a+b b=a-b; a=a-b;; 实际上以第一个 A(与a区别)=a+b 作为临时的参数A(实际a+b) 完成 b=A-b=a+b-b=a; a=A-a=(经过上面的运算 a==b了)=A-b; 用异或也是同理 A…
1.参加运算的两个数据,按照二进制进行按位与的运算. 运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0. 例如:3&5  即 0000 0011 & 0000 0101 = 0000 0001   因此,3&5的值得1. 3&5的与运算是先转换为二进制之后再进行规则比较得出最后的结果,为1. 2.参加运算的两个对象,按二进制位进行“或”运算. 运算规则:0|0=…
<?php /** php中有4个位运算,分别是&与 |或 ^异或 ~取反 & 两位全为1,结果为1 | 有一位为1,结果为1 ^ 一个为0,一个为1,结果为1 ~ 取反0->1,1->0 1.二进制的最高位是符号位,0表示正数,1表示负数. 2.正数的原码,反码,补码都一样. 3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0). 4.负数的补码=它的反码+1. 5.0的反码,补码都是0. 6.php没有无符号数,换言之,php中的数都是有符…
第一次接触异或运算,总体来说比哈希算法简单的多,无论是理解还是代码的难易度,唯一不好的是在固定了密钥之后,随机性就小了很多,所以安全性比起哈希算法还是有所差距. 原理在网站上很多都有所以就不再赘述了.程序的正确性尚不可知,不管了. 直接贴代码: static void Main(string[] args) {         int i,n;         string s_result=null, s_text, s_key;         char ch;         Consol…