zoukankan      html  css  js  c++  java
  • 逻辑运算符(且或非),位运算符(异或),函数对象运算(bit_or)

    转载:C运算符

    一、逻辑运算符

    且、或、非

    &&  如果两个操作数都非零,则条件为真
    ||  如果两个操作数中有任意一个非零,则条件为真。
    !   非
    

    二、位运算符

    与、或、非、异或、取反、左移、右移

    |  按位或,按二进制位进行"或"运算。运算规则:(有 1 则为 1)
    &  按位与,按二进制位进行"与"运算。运算规则:(有 0 则为 0)
    ^  异或,相同为0,相异为1
    ~  按位取反
    << 二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
    >> 二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
    

    1.异或

    相同为0,相异为1

    转载:异或的其他用途

        0  ^  0  =  0  
        0  ^  1  =  1  
        1  ^  0  =  1  
        1  ^  1  =  0
    

    2.左移右移

    左移数据变大,右移数据变小

    三、C++中的函数对象运算符

    #include <iostream>
    #include <functional>
    
    int main()
    {
    	std::bit_or<int> a;
    	auto ret1 = a(2, 5);  // 等价于 auto ret1 = 2|5
    
    	std::logical_and<bool> b;
    	auto ret2 = b(false, true); //等价于 auto ret2 = false && true;
    
    	auto ret3 = std::not_fn(ret2); //等价于 auto ret3 = !ret2;
    
    	std::plus<int> c;
    	auto ret4 = c(2, 4);  //等价于 auto ret4 = 2 + 4;
    
    	//std::equal_to d;  //可以自动识别类型
    	std::equal_to<int> d;
    	auto ret5 = d(2, 3); //等价于 auto ret5 = (2 == 3);
    
    	std::ranges::equal_to e;  // C++ 20
    	auto ret6 = e(2, 3.3);  //	auto ret6 = (2 == 3.3);
    	auto ret7 = e(2, 'b');  //	auto ret7 = (2 == 'b');
    
    	return 0;
    }
    

    中文标准库中的函数对象

    四、c++17之std::byte

    bitset,bitmap,byte

  • 相关阅读:
    解析XML技术
    XML名命空间
    XML解析器
    java列表组件鼠标双击事件的实现
    XML(可拓展标记语言)基本概念
    数据包式套接字:基于UDP协议的Socket网络编程
    流式套接字:基于TCP协议的Socket网络编程(案例3)
    剑指 Offer 58
    剑指 Offer 58
    剑指 Offer 57
  • 原文地址:https://www.cnblogs.com/mmmmmmmmm/p/14586206.html
Copyright © 2011-2022 走看看