逻辑运算符(且或非),位运算符(异或),函数对象运算(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

原文链接: https://www.cnblogs.com/mmmmmmmmm/p/14586206.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    逻辑运算符(且或非),位运算符(异或),函数对象运算(bit_or)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/404175

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月24日 下午6:43
下一篇 2023年4月24日 下午6:44

相关推荐