最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中實(shí)現(xiàn)位運(yùn)算的示例代碼

 更新時(shí)間:2026年03月12日 08:21:31   作者:保定思睿 C++ 教研室  
位運(yùn)算是對二進(jìn)制數(shù)的每一位進(jìn)行的操作,本文介紹了計(jì)算機(jī)中的位運(yùn)算概念及常見操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、位運(yùn)算概念

計(jì)算機(jī)唯一識別的數(shù)據(jù)的二進(jìn)制數(shù)據(jù),計(jì)算機(jī)中所有數(shù)據(jù)都以二進(jìn)制形式存儲(chǔ),即 0 和 1 兩種狀態(tài)。計(jì)算機(jī)對二進(jìn)制數(shù)據(jù)進(jìn)行的運(yùn)算(算數(shù)運(yùn)算、邏輯運(yùn)算等)被稱為位運(yùn)算,即對二進(jìn)制數(shù)的每一位進(jìn)行操作的運(yùn)算。

二、位運(yùn)算符號

運(yùn)算符作用說明
&按位與兩個(gè)操作數(shù)同時(shí)為1,結(jié)果為1
按位或兩個(gè)操作數(shù)同時(shí)為0,結(jié)果為0

~

按位非

操作數(shù)為1,結(jié)果為0;操作數(shù)為0,結(jié)果為1

^

按位異或

兩個(gè)操作數(shù)相同,結(jié)果為0;不相同結(jié)果為1

<< 

左移

右側(cè)空位補(bǔ)0

>> 

右移

左側(cè)空位補(bǔ)符號位

按位與的用途:需要清零的位與0進(jìn)行與操作;需要保留的某些位與1進(jìn)行與操作。

按位或的用途:將置1的某些位與1進(jìn)行或,需要保持的某些位與0進(jìn)行或。

三、代碼解析

#include <iostream>
#include <iomanip>  // 僅用于格式化二進(jìn)制輸出,無額外子函數(shù)
using namespace std;

int main() {
    
    cout << "=== 基礎(chǔ)位運(yùn)算示例 ===" << endl;
    int a = 6;   // 二進(jìn)制:00000110
    int b = 10;  // 二進(jìn)制:00001010

    // 1. 按位與 &
    int andResult = a & b;  // 00000010 → 2
    cout << "a & b = " << andResult << "  ";
    for (int i = 7; i >= 0; i--) 
        cout << ((andResult >> i) & 1);
    cout << endl;

    // 2. 按位或 |
    int orResult = a | b;   // 00001110 → 14
    cout << "a | b = " << orResult << "  ";
    for (int i = 7; i >= 0; i--) 
        cout << ((orResult >> i) & 1);
    cout << endl;

    // 3. 按位異或 ^
    int xorResult = a ^ b;  // 00001100 → 12
    cout << "a ^ b = " << xorResult << "  ";
    for (int i = 7; i >= 0; i--) 
        cout << ((xorResult >> i) & 1);
    cout << endl;

    // 4. 按位取反 ~(僅顯示低8位)
    int notResult = ~a;
    cout << "~a = " << notResult << "  ";
    for (int i = 7; i >= 0; i--) 
        cout << (((unsigned int)notResult & 0xFF) >> i & 1);
    cout << endl;

    // 5. 左移 <<
    int leftShift = a << 2; // 00011000 → 24
    cout << "a << 2 = " << leftShift << "  ";
    for (int i = 7; i >= 0; i--) 
        cout << ((leftShift >> i) & 1);
    cout << endl;

    // 6. 右移 >>
    int rightShift = b >> 1; // 00000101 → 5
    cout << "b >> 1 = " << rightShift << "  ";
    for (int i = 7; i >= 0; i--) 
        cout << ((rightShift >> i) & 1);
    
    cout << "\n=====================" << endl;

    // ===================== 第二部分:位運(yùn)算實(shí)用技巧 =====================
 
    // 技巧1:判斷奇偶
    int num1 = 15, num2 = 16;
    cout << num1 << " 是" << ((num1 & 1) ? "奇數(shù)" : "偶數(shù)") << endl;
    cout << num2 << " 是" << ((num2 & 1) ? "奇數(shù)" : "偶數(shù)") << endl;

    // 技巧2:交換兩個(gè)數(shù)(無需臨時(shí)變量)
    int x = 8, y = 12;
    cout << "\n交換前:x=" << x << ", y=" << y << endl;
    x = x ^ y;
    y = x ^ y;
    x = x ^ y;
    cout << "交換后:x=" << x << ", y=" << y << endl;

    // 技巧3:將某一位置1(第3位,從0計(jì)數(shù))
    int val = 5; // 00000101
    int bitPos = 3;
    val |= (1 << bitPos); // 00001101 → 13
    cout << "\n將第" << bitPos << "位置1后:" << val << endl;

    // 技巧4:將某一位清零(第2位)
    val = 13; // 00001101
    bitPos = 2;
    val &= ~(1 << bitPos); // 00001001 → 9
    cout << "將第" << bitPos << "位清零后:" << val << endl;

    // 技巧5:判斷某一位是否為1(第1位)
    val = 9; // 00001001
    bitPos = 1;
    bool is1 = (val & (1 << bitPos)) != 0;
    cout << "第" << bitPos << "位是" << (is1 ? "1" : "0") << endl;

    // 技巧6:快速計(jì)算2的n次方
    bitPos = 5;
    int pow2 = 1 << bitPos; // 32
    cout << "2^" << bitPos << " = " << pow2 << endl;

    
    return 0;
}

到此這篇關(guān)于C++中實(shí)現(xiàn)位運(yùn)算的示例代碼的文章就介紹到這了,更多相關(guān)C++ 位運(yùn)算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

诸暨市| 平塘县| 如皋市| 定结县| 景东| 蛟河市| 霍林郭勒市| 万全县| 体育| 叶城县| 巧家县| 漳州市| 措美县| 闽侯县| 蒙阴县| 津市市| 大连市| 大冶市| 广平县| 来安县| 西城区| 威海市| 枣强县| 多伦县| 金堂县| 杭锦旗| 石嘴山市| 屯门区| 密山市| 塘沽区| 乐清市| 得荣县| 孟津县| 象州县| 丘北县| 墨玉县| 同德县| 静乐县| 宜宾市| 沾益县| 聂荣县|