C++基础-位运算

昨天笔试遇到一道题,让实现乘法的计算方法,设计方案并优化,后来总结位运算相关知识如下:

在计算机中,数据是以1010的二进制形式存储的,1bytes = 8 bits,bit就是位,所以位运算就是对每个1010进行操作。

位运算有&|~^<<>>,分别是与或非异或左移右移。

与:1与不变,0与为0;

或:只有0或0为0,其他情况都为1;

非:取反;

异或:相同为0,不同为1;

左移右移:向左/右移动若干位;

乘法:

左移一位,相当于x2;

除法:

右移一位,/2;

不用申请第三个变量而实现2个变量值的互相交换:

因为a^b^a==b

所以有:

a=a^b;

b=a^b;

a=a^b;

时间: 2024-10-09 11:37:19

C++基础-位运算的相关文章

JavaSE7基础 位运算 int类型变量进行 按位 与或非异或

jdk版本  :jdk-7u72-windows-i586系统     :Windows7编辑器   :Notepad++ v7.4.2注意事项 :博文内容仅供参考,不可用于其他用途. 代码 class Demo{ public static void main(String[] args){ int a=3; int b=4; //位运算 //必须先把数据换算成二进制 //int类型 32bit //a 3 11 => 0000 0000 0000 0000 0000 0000 0000 00

基础位运算基本原理和应用

微信公众号 位运算是编程语言的基础,在看源码的时候会看到很多位运算代码,但是在项目代码中很少会看到位运算.因为应用代码中,有很多判断和计算都可以直接用数值的判断和计算完成,没有必要去用位运算,以至于这些基础的东西慢慢用的越来越少,慢慢也就忘了.导致的一个结果就是看源代码很费力,因为大量的位运算逻辑,看不懂.作为程序员感觉数据位运算是非常必要,有点如下: 看源码时能够更好的理解 位运算更接近计算机的习惯,执行的效率会更高 装逼利器,在项目中使用位运算,体现逼格 N种基本的位运算 位运算 -- 与运

[C++基础]位运算 游戏开发中的应用

位运算的定义:通俗点说,位运算就是对一个整数在计算机中二进制进行操作. 任何一个整数都可以用二进度的方式来表示的,不同类型的整数它的位数的长度也不一样,INT8或者char是由8个2进度 位表示,INT16或者short是由16个2进度位表示,INT32是由32位状态位表示. 位运算在游戏中的应用 往往,在游戏开发中做位运算的时候,我关注的主要是某一位的值是0,还是1,而并不是去关注这个整数的值是多少. 比如:00100010,这个8位的整数从右到左,它的第一位为0,第二位为1,第三位为0,第六

[C++基础]位运算应用——创建guid

/* |(按位或):x|y=z(z>=x.y),想想x,y各个二进制位一一对齐,只有对应为上有1,就取1,最后就得到了x,y的更大值."|"可以简单认为是就获取更大值的操作运算符 &(按位与):x|y=z(z<=x.y),想想x,y各个二进制位一一对齐,只有对应为上有0,就取0,最后就得到了x,y的更小值."&"可以简单认为是就获取更小值的操作运算符 >>(按位右移):x|y=z,想想x的二进制位右移y位(不要有小数点的想法,

位运算简介及实用技巧(一):基础篇[转]

位运算简介及实用技巧(一):基础篇 原贴链接:http://www.matrix67.com/blog/archives/264 去年年底写的关于位运算的日志是这个Blog里少数大受欢迎的文章之一,很多人都希望我能不断完善那篇文章.后来我看到了不少其它的资料,学习到了更多关于位运算的知识,有了重新整理位运算技巧的想法.从今天起我就开始写这一系列位运算讲解文章,与其说是原来那篇文章的follow-up,不如说是一个remake.当然首先我还是从最基础的东西说起. 什么是位运算?    程序中的所有

位运算基础

异或运算的基础有点忘记了 先介绍一下..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

Java基础-一文搞懂位运算

在日常的Java开发中,位运算使用的不多,使用的更多的是算数运算(+.-.*./.%).关系运算(<.>.<=.>=.==.!=)和逻辑运算(&&.||.!),所以相对来说对位运算不是那么熟悉,本文将以Java的位运算来详细介绍下位运算及其应用. 1. 位运算起源 位运算起源于C语言的低级操作,Java的设计初衷是嵌入到电视机顶盒内,所以这种低级操作方式被保留下来.所谓的低级操作,是因为位运算的操作对象是二进制位,但是这种低级操作对计算机而言是非常简单直接,友好高效

【基础算法】位运算-基本运算

上一篇中我们分析了位的定义,这一篇中我们分析一下位的基本运算 1. 移动 左移n位:乘以2的n次方 右移n位:除以2的n次方 (~0)左移n位:在1后面加上n个0 (注:~0不等于1,等于11-11) x&(~0<<n):将最右边的n位清零 正数左移右边补0 正数右移左边补0 负数左移右边补1 负数右移左边补1 移动的作用总结:乘2,除2,右n位清零 2. 异或 x^0=x x^x=0 x^1=~x x^~x=1 异或的作用总结:取数,清零,取非,清1 3. 且运算 x&0=0

c基础【一】利用位运算实现数字反转

#include <stdio.h> #include <stdlib.h> int main() { //通过位运算实现数字的反转(操作的对象必须是整数) unsigned int original =0x123; unsigned int result =0; unsigned int mask =0xF; //掩码 result |=original&mask; original>>=4; result<<=4; result |=origin