0; } 分析: 我们知道数据的计算是通过它的补码进行计算的 -3的原码:10000000000000000000000000000011 -3的反码:11111111111111111111111111111100 -3的补码:11111111111111111111111111111101 5的原反补 00000000000000000000000000000101 -3 & 5的补码:00000000000000000000000000000101 由于符号位为0,所以是正数,而正数的原反补相同,因此-3 & 5的结果是3 -3 | 5、-3 ^ 5以此类推,结果为-5、-8 ~0的补码:11111111111111111111111111111111 单目操作符 https://blog.csdn.net/wait___wait/article/details/135242898 5.逗号表达式 exp1, exp2, exp3, …expN //13 //代码2 if (a = b + 1, c = a / 2, d > 0) //代码3 冗长 a = get_val(); count_val(a); while (a > 0)
文章目录 一、末端操作符 1、collect 操作符 2、reduce 操作符 3、single 操作符 4、first 操作符 5、fold 操作符 6、toList 操作符 7、toSet 操作符 一、末端操作符 ---- 末端操作符 指的是 在 Flow 流最末端 调用 挂起函数 收集元素 的操作符 , 最常见的 末端操作符 就是 collect 操作符 ; 常见的末端操作符 : 收集元素 : collect 操作符原型 : /** * 终端流操作符,使用提供的[动作]收集给定的流。 } } } 执行结果 : 2022-12-26 15:51:20.411 24364-24364/kim.hsl.coroutine I/System.out: result : 6 3、 single 操作符 single 操作符原型 : /** * 终端操作符,等待一个且仅等待一个值发出。
关系操作符用于对两个值进行比较,返回一个布尔值。关系操作符包括大于(>),小于(<),大于等于(>=),小于等于(<=)。当关系操作符用于非数值时,也要先进行数值的转换。 如 var result=5>3; 1.尝试将两个操作符转换为数字; 2.如果两个操作符均为字符串,则进行字符串的比较 3.如果任一表达式为NaN,则返回false; 4.-0等于+0; 5.负无穷小于包含自身在内的任何数 2.全等和不全等 全等操作符由3个等号(===)组成,不全等操作符(!==)。全等与不全等和上面的差不多,只不过不进行类型的转换。 expression1 : expression2 var num=5>3?5:3; console.log(num);//输出5 赋值操作符由等号组成(=),作用是把右侧的值赋给左侧的变量。 也包含一些复杂的赋值操作符,如*=,+=,-=,/=,%=. var num=10; num%=2等于 num=num%2;num*=2;num+=3;num/=3;num-=2; 逗号操作符,使用逗号操作符
文章目录 一、过渡操作符 1、map 操作符 2、transform 操作符 二、限长操作符 ( take 操作符 ) 一、过渡操作符 ---- 过渡操作符 相关概念 : 转换流 : 使用 过渡操作符 collect : convert 2 2022-12-26 11:28:10.452 23972-23972/kim.hsl.coroutine I/System.out: collect : convert 3 System.out: 发射元素 : convert 2 2022-12-26 11:38:20.349 25902-25902/kim.hsl.coroutine I/System.out: 接收元素 : 3 2022-12-26 11:38:20.349 25902-25902/kim.hsl.coroutine I/System.out: 发射元素 : 3 2022-12-26 11:38:21.389 I/System.out: 发射元素 : convert 3 二、限长操作符 ( take 操作符 ) ---- 通过 take 操作符 , 可以选择选取指定个数的发射元素 ; 如 : 在 Flow
布尔操作符 布尔操作符用来测试两个值的关系,布尔操作符有三个,逻辑非(!)、逻辑与(&&),逻辑或(||)。 逻辑非由一个叹号(!)组成,可以应用于JavaScript任何值。 两个操作数都为false,结果为false 乘法操作符由一个星号(*)组成,用于计算两个数值的乘积。 var num =2*3; console.log(num);//输出6 除法操作符由一个斜杠(/)组成,用于第一个操作数除以第一个操作数的计算。 var num=4/2; console.log(num);//输出2 求模操作符由一个百分号(%)组成,用于计算余数。 2.如果有个操作数是NaN,则结果是NaN 3.如果Infinity+(-)Infinity,结果为NaN
JavaScript操作符包括算术操作符、位操作符、关系操作符和相等操作符。只能操作一个值的操作符叫做一元操作符。 递增和递减操作符 递增和递减操作符有两个版本:前置型和后置型。 前置型操作符位于要操作的变量之前,后置型操作符位于要操作的变量之后。 需要将一个变量的值在使用前就进行加减操作,一般使用前置操作符。 一元加减操作符 大多数开发人员对一元加减操作符都不陌生,一元+操作符放在数值前面,对数值不会产生影响。一元减操作符(-)用于表现负数,如-1. 1*2^6+1*2^5+1*2^4+1*2^3+0*2^2+1*2^1+1*2^0. 负数也是以二进制来表示,但是使用的是二进制的补码。 计算一个数值的二进制补码需要经过以下步骤: 1.先求这个数值的绝对值的二进制编码; 2.求二进制反码,将二进制码的0替换1,1替换为0 3.将二进制的反码加1.
2.关系操作符 关系操作符顾名思义就是表关系的操作符。主要分为这几类: > < >= <= ==(在C语言中两个等号才是相等,一个等号是赋值的意思) ! 3.条件运算符 ep1 ? ep2 : ep3 条件运算符顾名思义是用来说明条件的。 而这个符号的意思就是若表达式1为真,则表达式2计算,表达式3不再计算 若表达式1为假,则表达式3计算,表达式2不再计算 并且两种情况计算出的是整个表达式的结果 这个操作符用于条件语句中,一个前提,两个结果。同时它是一个三目操作符。 4.逻辑运算符 !:逻辑取反运算符(改变单个表达式的真假)这个运算符相当于数学中的否命题。 也就是有一个事件a,那么! 8.for语句 for语句的格式是: for(表达式1; 表达式2; 表达式3) 语句; 各语句的作用: 表达式1 ⽤于循环变量的初始化 表达式2 ⽤于循环结束条件的判断 表达式3 ⽤于循环变量的调整
本文只介绍算数操作符,如果讲全部操作符,篇幅会很长,后面我们在讲其他的操作符。 1 算数操作符 +、-、*、/、 %我们归为算数操作符(二元算数),这几个是最简单的操作符。 1.1 +(加) 加法操作符(+)用于求两个数的和。 let result = 1 + 2 + 3; 这里不多说,如果两个操作数都是数字,那就是相加,如果有一方是字符串,那就是两个操作数拼接。 1.2 -(减) 减法操作符(-)也是使用很频繁的一种操作符 let result = 2 - 1 - 1; 如果两个操作数都是数值,则执行数学减法运算并返回结果。 1.3 *(乘) 乘法操作符由一个星号(*)表示,可以用于计算两个数值的乘积。 1.4 /(除) 除法操作符由一个斜杠(/)表示,用于计算第一个操作数除以第二个操作数的商。
操作符分类 算数操作符: + 、- 、* 、/ 、% 移位操作符: << >> 位操作符: & | ^ 赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、<<= 、>>= 、&= 、|= 移位操作符: >>, << ‘<<’ 左移操作符 ‘>>’ 右移操作符 注:移位操作符的操作数只能是整数。 1. , 此时a = a ^ b ,此时b的结果已经为a的值了 , 但是a依然是1式的a, 此时3式为 a = a ^ b , 即a = a ^ b ^a , 而此时a ^ a 的结果为0 ,( ^操作符也具有交换性 例如: 数组中有:1 2 3 4 5 1 2 3 4,只有5出现一次,其他数字都出现2次,找出5 参考代码: #include <stdio.h> int find_single_dog(int arr < sz; i++) { ret ^= arr[i]; } return ret; } int main() { int arr[] = { 1,2,3,4,5,1,2,3,4
其他的都比较简单 移位操作符 移位操作符是移动的二进制位,并且只能是整数 右移操作符==>>== 在这里我只讲一种,那就是算术移位 即右边的抛弃,左边补充符号位 例如; c char a=5; char b = 2; 10 a&b 00——》0 a|b 11——》3 a^b 11——》3 printf("%d\n%d\n%d\n", a&b,a|b,a^b); return 0; } 看结果 条件操作符 条件操作符:exp1? 表达式2:表达式3 它是这样运行的: 如果表达式1成立,表达式2执行; 如果表达式1不成立,表达式3执行。 下标引用、函数调用和结构成员 []下标引用操作符 ()函数调用操作符 结构体访问操作符 .
关系操作符执行比较两个值的操作,包括小于(<)、大于(>)、小于等于(<=)和大于等于(>=),用法跟数学课上学的一样。这几个操作符都返回布尔值。 这个没什么好说的,学过数据的都知道。 let a = 1 let b = 2 let c = 3 console.log(a > b) console.log(a < b) console.log(a + b <= c) console.log 如果没有 valueOf()操作符,则调用 toString()方法,取得结果后再根据前面的规则执行比较。 如果有任一操作数是布尔值,则将其转换为数值再执行比较。 很多人搞不懂字符串是怎么比较的,对字符串而言,关系操作符会比较字符串中对应字符的编码,而这些编码是数值。比较完之后,会返回布尔值。 console.log("a" < 3) // false console.log("a" >= 3) // false 所以这里要重点记下,任何值和NaN比较时,都会返回false。
今天就说说这四个操作符。 1 ==和=== 判断两个值是否相等,我们一般是a==b来判断,其他的编程语言也是一样,但是在JavaScript中,还有===这种操作。
对于编程语言来说,逻辑操作符跟相等操作符几乎同样重要。 逻辑操作符一共三个,!(逻辑非)、&&(逻辑与)、||(逻辑或)。 1 ! (逻辑非) 这个操作符始终返回布尔值,无论什么数据类型,逻辑非操作符始终先将操作数据转换为布尔值,之后在进行取反。 console.log(!false); // true console.log(! 2 &&(逻辑与) 逻辑与操作符可用于任何类型的操作数,不限于布尔值。 //undefined console.log({} && NaN); //NaN console.log(NaN && {}); //NaN 3
= 逻辑运算符:先&& 后|| 算术运算符 / var a=3; console.log(a/0); % var a=3; console.log(a%0); 一元运算符 var a=1; ++a;
---- 前不久写了 3 篇关于 RxJS 的入门级文章: 你就是函数响应式编程(FRP)啊?!【附 RxJS 实战】 为什么说:被观察者是 push 数据,迭代者是 pull 数据? 所以,借着更文的契机,日日新、月月新,学习 RxJS 接着冲~ 本篇带来:observables 操作符 —— 创建实例,是基础之基础、重要之重要; 操作符为复杂的异步任务提供了一种优雅的声明式解决方案 4, 5]); // 输出: 1,2,3,4,5 const subscribe = arraySource.subscribe(val => console.log(val)); of 与 from list,按顺序发出任意数量的值; // RxJS v6+ import { of } from 'rxjs'; // 依次发出提供的任意数量的值 const source = of(1, 2, 3, ...... const subscribe = source.subscribe(val => console.log(val)); OK,以上便是对核心的创建实例的 Observable 操作符的介绍
今天主要了解一下按位操作符和移位操作符,因为看源码的时候经常会遇到,之前有点不明白,趁着这次机会学习一下。 按位操作符 按位操作符是用来操作整数基本类型中的当个“比特”,即二进制位。 与操作符 & 如果两个输入位都是1,则会生成一个输出位1;否则会生成一个输出位0。 例如: 12: 1100 6: 0110 12 ^ 6 得到 1010 --> 10 按位非 ~ 按位非也叫取反操作符,属于一元操作符,只针对一个操作数进行操作(前面几个操作符都是针对两个操作数, 移位操作符 移位操作符操作的对象也是二进制的“位”。移位操作符只能用来操作整数类型。 左移位操作符 << 左移位操作符能按照右侧指定的位数将操作符左边的操作数向左移动,在低位补0。 十进制中1的进制表示为: 0000 0001当执行 1 << 4,将其向左移动4位,得到: 0001 0000换算位十进制就是16 右移位操作符 >> 右移位操作符按照操作符右侧指定的位数将操作符左边的操作数向右移动
.add(matrix2.multiply(matrix3)); // 重载操作符后 Matrix result = matrix1 + matrix2 * matrix3; 1.2 操作符重载基本原则 c2.display(); std::cout << "c1 + c2: "; c3.display(); return 0; } 定义了一个 Complex 类,并重载了加法操作符 "p1 and p3 are equal." << std::endl; } else { std::cout << "p1 and p3 are not equal." << 4); Point p3(1, 3); if (p1 < p2) { std::cout << "p1 < p2" << std::endl; } else p3 are not equal." << std::endl; } if (p1 < p3) { std::cout << "p1 < p3" << std::endl
初写C++代码时, 在访问类的成员变量时候,看到有些地方使用(.)操作符,而有的地方又使用箭头(->)操作符。并且在VS中写C++代码没有自动补全等提示,在coding的时候是有点蒙的。 搞不清到底是应该使用(.)操作符还是箭头(->)操作符。 上网搜索了下了解如下: a->b最初是(*a).b的简写符号.
==操作符: 基本数据类型比较值; 引用数据类型比较引用(是否指向同一个对象) equals操作符: 引用数据类型比较引用(是否指向同一个对象) 对于String、File、Date、包装类来说,只比较类型和内容
首先,给大家说明一点,移位操作符的操作数只能是整数,移位移动的是二进制位(当然整数在内存中存的是补码)。 1.左移操作符(<<) 首先我们来看左移操作符,<<: 左移操作符的移位规则是: 左边抛弃、右边补0 我们来举个例子: #include <stdio.h> int main() { int a 做了两道题之后,我们好像可以发现一个规律: 对整数左移一位,相当与乘了一个2: 10左移一位结果是20; -2左移一位结果是-4; 那左移操作符我们学会了,接下来我们来看右移操作符。 ⛄️ 2.右移操作符(>>) 对于右移操作符,它的移位规则分为两种: (1)算术右移 右边丢弃,左边补原符号位 上例子: int main() { int a = -1; int b = a 以上就是移位操作符的全部内容,欢迎大家指正!!!