c4146解决方法和pdep与pext使用方法

在C++编程时遇到4146警告,可以通过在程序开头添加#pragma warning (disable:4146)来消除。本文还介绍了_pdep_u64和_pext_u64这两个比特位操作函数的实现,用于在Intel 64/x86_64/IA-32/x86处理器上的位操作。

有时如果仅仅将属性-》c/c++->常规中的sdl改成否不能解决这个报错,这不是错误只是个警告而已,在程序开头加一句这个就好了,示例如下:

#include<stdlib.h>
#include<iostream>
#pragma warning (disable:4146)//加的就是这个
using namespace std;
unsigned __int64 _pdep_u64(unsigned __int64 val, unsigned __int64 mask) {
    unsigned __int64 res = 0;
    for (unsigned __int64 bb = 1; mask; bb += bb) {
        if (val & bb)
            res |= mask & -mask;
        mask &= mask - 1;
    }
    return res;
}
unsigned __int64 _pext_u64(unsigned __int64 val, unsigned __int64 mask) {
    unsigned __int64 res = 0;
    for (unsigned __int64 bb = 1; mask; bb += bb) {
        if (val & mask & -mask)
            res |= bb;
        mask &= mask - 1;
    }
    return res;
}
int main() {
    unsigned __int64 src = 30;
    unsigned __int64 mask = 26;
    unsigned __int64 reg = 0;
    //reg = _pdep_u64(src, mask);
    reg = _pext_u64(src, mask);
    //reg = _pdep_u64(reg, mask);
    unsigned __int64 reg1 = _pdep_u64(reg, mask);
    cout << "src:" << src << endl;
    cout << "reg1:" << reg1 << endl;
    return 0;
}

(98条消息) Intel 64/x86_64/IA-32/x86处理器 - 通用指令(9/E) - 比特位操控指令(BMI1 & BMI2)_一凡stkeke-CSDN博客_bmi2指令集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值