位运算符

JavaScript位运算符

匆匆过客 提交于 2019-12-04 22:11:08
一、位运算符 位运算符处理 32 位数 该运算中的任何数值运算数都会被转换为 32 位数,结果会被转换回 JavaScript 数 位运算符用于直接对二进制进行计算,共有七个运算符: 或运算(or):符号为 | ,若两个二进制位都为0,则结果为0,否则为 1; 与运算符(and):符号为 & ,若两个二进制位都为 1,则结果为1,否则为 0; 否运算(not):符号为 ~ ,对一个二进制位取反; 异或运算(xor):符号为 ^ ,若两个二进制位不相同,则结果为1,否为0。 左移运算(left shift):符号为 << 右移运算(right shift):符号为 >> 带符号位的右移运算(zero filled right shift):符号为 >>> 二、位运算符简介 位运算符直接处理每一个比特位(bit),所以是非常底层的运算。 好处 :运算速度极快; 缺点 :运算很不直观,许多场合不能使用,否则会使代码难以理解和查错。 注意 : 位运算符只对整数起作用,如果一个运算子不是整数,则会自动转成整数后再执行 。 在JavaScript内部,数值都是以64位浮点数的形式储存的,但是在做位运算的时候,是以32位带符号的整数进行运算的,并且返回的值也是一个32位带符号的整数。 三、各位运算符的特点 (一)或运算 和 与运算 逐个位数比较两个运算子 或运算 : 两个二进制位中只要有一个为

Java中的位运算符

淺唱寂寞╮ 提交于 2019-12-04 08:56:12
Java中的位运算符 文本关键字:位运算符、位逻辑运算符、移位运算符 一、位运算符 大家在接触运算符的时候通常都已经学完了变量的使用,对于算术以及赋值运算的感觉就是So easy!这不就是小学的知识嘛,对于逻辑运算符的部分依然无压力,这不就是中学的知识嘛?但是突然出现了一个位运算符,啥是移位?啥是异或?接下来就先从简单的开始。 说起位运算符,其实就是基于数据存储的二进制位进行的运算,更底层,所以效率更高。另外一个需要注意的问题就是:由于小数在进行存储的时候采用的是IEEE(符号、指数、尾数)方式,并不止对整数和小数部分直接转换为二进制来存储的,所以小数是不能使用位运算符来操作的。对于整数和字符型的运算符操作也有一些潜在的法则,相信看完这篇文章你很容易就会掌握。 二、逻辑运算 在逻辑运算中我们已经使用过能够表达逻辑意义的运算符,如:&&,||,!。这些运算符都有一个共同点,那就是:运算符两边都是布尔值或布尔表达式,他们能够操作的数据类型有限,只能够帮我们进行逻辑运算。有些教材将&,|等位运算符也归为逻辑运算符,因为按位与(&)、按位或(|)能够操作的数据类型较多,其中就包括布尔类型,并且也能够帮助我们进行逻辑运算,但是小编还是建议按照符号本身的运算方式和操作数据类型等来记忆。 1. 与(&) 与运算 与运算相当于物理电路中的串联电路,我们假设用1代表通路,用0代表断路

js语言的位运算符(其他语言也通用)

我与影子孤独终老i 提交于 2019-12-02 14:43:58
一.左移运算符(<<) 1.1 该运算符有2 个运算数, a<<b, 将a左移相当于a左移2 的b次方, 2个运算符要求是整数,或可以转换成整数的. eg: 2<<2=8 5<<2=20 "1"<<2=4 二.右移运算符(>>) 1.1 该预算符有2个运算数, a>>b , 将a右移b位, 相当于, Math.floor(a/2的b次方) Math.floor向下取整 eg: 8>>2=2 -7>>1=4 注意点ONE: 当运算符 a 无法转换成整数时,运算结果为0 eg: NAN<<2=0 {}<<2=0 NAN>>2=0 注意点TWO: 当运算符 b 无法转换成整数时,运算结果为a eg: 2<<NAN=2 8<<{}=8 1>>NAN=2 注意点THREE: 当运算符a . b 无法转换成整数时,运算结果为0 eg: NAN<<NAN=0 "a"<< infinity =0 注意点FORTH: 用0补足的右移运算符(>>>) eg: "a">>>2=0 a>>>NAN=0 20>>>NAN=20 来源: https://www.cnblogs.com/yangxiaozhen001/p/11750738.html

python中的位运算符计算

混江龙づ霸主 提交于 2019-12-02 07:59:55
python中的位运算符是按照 二进制位对值进行操作的,因此在学习位运算之前,我们来看看二进制运算。 二进制运算: 整数转二进制 :将正的十进制数除以二,得到的商再除以二,依次类推知道商为零或一时为止,然后在旁边标出各步的余数,最后倒着写出来,高位补零就OK <ignore_js_op> 负整数转换成二进制 :先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一。还以42为例,负整数就是-42。 <ignore_js_op> 小数转换为二进制 :对小数点以后的数乘以2,有一个结果吧,取结果的整数部分(不是1就是0喽),然后再用小数部分再乘以2,再取结果的整数部分……以此类推,直到小数部分为0或者位数已经够了就OK了。然后把取的整数部分按先后次序排列就OK了,就构成了二进制小数部分的序列,举个例子吧,比如0.125 。 <ignore_js_op> python中的位运算符: 1、与(&),按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 5&3 = 1 ---------- ------> 101 011 001 相同位仅为个位1 ,故结果为 1 2、或(|),按位或运算符:只要对应的两个二进位有一个为1时,结果位就为1 5|3 = 7 ---------- ------> 101 011 出现1的位是 1 1 1,故结果为 111 3

常见的关系运算符(位拼运算符)

一曲冷凌霜 提交于 2019-12-01 06:28:53
常见的关系运算符(位拼运算符) 写在前面的话 位拼运算符2477203708是将多个小的表达式合并形成一个大的表达式,用符号{}来实现多个表达式的连接运算,各个表达式之间用“,”隔开。位拼运算符是梦翼师兄特别喜欢的一种运算符,它聪慧灵秀,不但可以进行简单的数据拼接,更是可以用来执行移位操作,而且数据永远是循环的,不会丢失,用途非常广泛。 代码实例 /**************************************************** * Engineer : 梦翼师兄 * QQ : 761664056 * The module function:位拼接运算符模块 *****************************************************/ 01 module shift ( clk , rst_n , led_out ); 02 input clk ; //系统输入 03 input rst_n ; //系统复位 04 05 output reg [ 3 : 0 ] led_out ; //led驱动端口 06 07 always @( posedge clk or negedge rst_n ) 08 begin 09 if (! rst_n ) 10 begin 11 led_out <= 4'b0111 ; /

常见的关系运算符(位拼运算符)

守給你的承諾、 提交于 2019-12-01 06:28:32
常见的关系运算符(位拼运算符) 写在前面的话 位拼运算符是将多个小的表达1765243235合并形成一个大的表达式,用符号{}来实现多个表达式的连接运算,各个表达式之间用“,”隔开。位拼运算符是梦翼师兄特别喜欢的一种运算符,它聪慧灵秀,不但可以进行简单的数据拼接,更是可以用来执行移位操作,而且数据永远是循环的,不会丢失,用途非常广泛。 代码实例 /**************************************************** * Engineer : 梦翼师兄 * QQ : 761664056 * The module function:位拼接运算符模块 *****************************************************/ 01 module shift ( clk , rst_n , led_out ); 02 input clk ; //系统输入 03 input rst_n ; //系统复位 04 05 output reg [ 3 : 0 ] led_out ; //led驱动端口 06 07 always @( posedge clk or negedge rst_n ) 08 begin 09 if (! rst_n ) 10 begin 11 led_out <= 4'b0111 ; /

C++位运算符

ぃ、小莉子 提交于 2019-11-30 19:07:11
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。 C 语言提供的位运算符列表: 运算符 作用 示例 & 按位与 两个操作数同时为1结果为1 | 按位或 两个操作数只要有一个为1,结果就为1 ~ 按位非 操作数为1,结果为0;操作数为0,结果为1 ^ 按位异或 两个操作数相同,结果为0;不相同结果为1 << 左移 右侧空位补0 >> 右移 左侧空位补符号位 1 、“按位与”运算符(&) -- 按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false。按位与其实与逻辑上“与”的运算规则一致。逻辑上的“与”,要求运算数全真,结果才为真。若,A=true,B=true,则A∩B= true。 例如: 3&5 3 的二进制编码是11(2)。(为了区分十进制和其他进制,本文规定,凡是非十进制的数据均在数据后面加上括号,括号中注明其进制,二进制则标记为2)内存储存数据的基本单位是字节(Byte),一个字节由8个位(bit)所组成。位是用以描述电脑数据量的最小单位。二进制系统中,每个0或1就是一个位。将11(2

Java位运算符&、|、^、>>、<<、~、>>>

℡╲_俬逩灬. 提交于 2019-11-30 08:05:41
如果要搞懂Java中的位运算符,首先要搞懂二进制的运算,之前一篇有介绍详细请看 二进制运算-十进制与二进制的转换 Java中的位运算符有: & (按位与)、|(按位或)、^(按位异或)、>>(右移)、<<(左移)、~(取反)、>>>(无符号右移) 下面来逐一介绍: &(按位与) int i = 5&2; int j = 7&3; System.out.println("i="+i);//i=0 System.out.println("j="+j);//j=3 按位与的运算规则是先将两边转换为二进制,再计算最终值,运算规则“ 逢0变0 ”,即1&1=1,1&0=0,0&1=0,0&0=0 5的二进制101,2的二进制10,5&2即为101&10,不足位补0,101&010,根据运算规则得出最终值0,十进制也是0 7的二进制111,3的二进制11,7&3即为111&011,根据运算规则得出最终值011,转换为十进制就是3 |(按位或) int i = 6|2; int j = 5|3; System.out.println("i="+i);//i=6 System.out.println("j="+j);//j=7 按位或的运算规则是先将两边转换为二进制,运算规则“ 逢1变1 ”,即1|1=1,1|0=1,0|1=1,0|0=0 6的二进制110,2的二进制10,6|2即为110

c语言学习笔记-运算符

半城伤御伤魂 提交于 2019-11-30 05:50:50
以下内容均为看郝斌老师视频和教学大纲,总结,复制粘贴而来的笔记。 一些琐碎的运算符知识: 1.自增【或自减】   分类:前自增 ----- ++i      后自增 ----- i++   前自增和后自增的异同:   相同:最终都使i的值加一   不同:     前自增整体表达式的值是i加一之后的值     后自增整体表达式的值是i加一之前的值 为什么会出现自增?   代码更精炼   自增速度更快 学习自增要明白的几个问题   1.我们编程时尽量屏蔽掉前自增和后自增的差别   2.自增表达式最好不要作为一个更大的表达式的一部分来使用    或者说i++或++i单独作为一个语句,不要把他作为完整复合语句的一部分来使用 2.三目运算符   A?B;C   等价于   if(A)     B;   else     C; 3.逗号表达式   格式   (A,B,C,D)   功能:     从左到右执行     最终表达式的值是最后一项的值 4.位运算符   &-按位与   &&-逻辑与也叫并且   &与&&的含义完全不同      |-按位或   ||-逻辑或      ~-按位取反   ~i就是把i变量所有二进制位取反   ^-按位异或   相同为零,不同为一      << -按位左移     左移n位相当于乘以2的n次方,比乘法运算执行快   >>-按位右移    

Java基础-运算符(一)

有些话、适合烂在心里 提交于 2019-11-29 15:10:11
Java 语言支持如下运算符: 算术运算符: +,-,*,/,%,++,– 赋值运算符 = 扩展赋值运算符:+=,-=,*=,/= 关系运算符: >,<,>=,<=,==,!= 逻辑运算符: &&,||,! 位运算符: &,|,^,~ , >>,<<,>>> (了解!!!) 条件运算符 ?: 相关概念辨析 +运算符 操作符 Operator 5+6 表达式 expression 5 6 操作数 Operand int m =5+6; 语句 Sentence 代码示例 package com . cwl . base . day01 ; /** * @program: java_base * @description: 测试算术运算符 * @author: ChenWenLong * @create: 2019-11-05 15:07 **/ public class TestOperator01 { public static void main ( String [ ] args ) { /* byte a = 1; int b = 2; long b2 = 3; // byte c = a+b; //报错 // int c2 = b2+b; //报错 float f1 = 3.14F; float d = b+b2; // float d2 = f1+ 6.2; //报错