掩碼數組c語言,掩碼字符C的含義

本文目錄一覽:

關於C語言定義掩碼

1、比如定義一個數

int a=0x1111

(unsigned int male=0x4)那麼   a|male     的值就是0001 0001 00010101   只有第三位影響了

unsigned int male=0xFF 那麼  a|male   的值就是111111111 0001 0001   後8位值不變

2、例程:

#include stdio.h

#include conio.h

#include ctype.h

 

#define MAX_PASSWD_LEN 20

 

char *GetPasswd(char pasw[]) {

    unsigned char ch;

    int i = 0;

    while((ch = _getch()) != ‘\r’) {

        if(i  0  ch == ‘\b’) {

            –i;

            putchar(‘\b’);

            putchar(‘ ‘);

            putchar(‘\b’);

        }

        else if(i  MAX_PASSWD_LEN  isprint(ch)) {

            pasw[i++] = ch;

            putchar(‘*’);

 

        }

    }

    putchar(‘\n’);

    pasw[i] = ‘\0’;

    return pasw;

}

int main() {

    char psw[MAX_PASSWD_LEN] = {0};

    printf(“%s\n”,GetPasswd(psw));

    return 0;

}

C語言位運算掩碼

一、位運算符c語言提供了六種位運算符:

按位與

|按位或

^按位異或

~取反

左移

右移

1.按位與運算按位與運算符””是雙目運算符。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1,否則為0。參與運算的數以補碼方式出現。

例如:95可寫算式如下:00001001(9的二進制補碼)00000101(5的二進制補碼)00000001(1的二進制補碼)可見95=1。

按位與運算通常用來對某些位清0或保留某些位。例如把a的高八位清0,保留低八位,可作a255運算(255的二進制數為0000000011111111)。

main(){

inta=9,b=5,c;

c=ab;

printf(“a=%d\nb=%d\nc=%d\n”,a,b,c);

}

2.按位或運算按位或運算符「|」是雙目運算符。其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。

例如:9|5可寫算式如下:00001001|00000101

00001101(十進制為13)可見9|5=13

main(){

inta=9,b=5,c;

c=a|b;

printf(“a=%d\nb=%d\nc=%d\n”,a,b,c);

}

3.按位異或運算按位異或運算符「^」是雙目運算符。其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。參與運算數仍以補碼出現,例如9^5可寫成算式如下:00001001^0000010100001100(十進制為12)

main(){

inta=9;

a=a^15;

printf(“a=%d\n”,a);

}

4.求反運算求反運算符~為單目運算符,具有右結合性。其功能是對參與運算的數的各二進位按位求反。例如~9的運算為:~(0000000000001001)結果為:1111111111110110

5.左移運算左移運算符「」是雙目運算符。其功能把「」左邊的運算數的各二進位全部左移若干位,由「」右邊的數指定移動的位數,

高位丟棄,低位補0。例如:a4指把a的各二進位向左移動4位。如a=00000011(十進制3),左移4位後為00110000(十進制48)。6.右移運算右移運算符「」是雙目運算符。其功能是把「」左邊的運算數的各二進位全部右移若干位,「」右邊的數指定移動的位數。

例如:設a=15,a2表示把000001111右移為00000011(十進制3)。應該說明的是,對於有符號數,在右移時,符號位將隨同移動。當為正數時,最高位補0,而為負數時,符號位為1,最高位是補0或是補1取決於編譯系統的規定。turboc和很多系統規定為補1。

main(){

unsigneda,b;

printf(“inputanumber:”);

scanf(“%d”,a);

b=a5;

b=b15;

printf(“a=%d\tb=%d\n”,a,b);

}

請再看一例!

main(){

chara=’a’,b=’b’;

intp,c,d;

p=a;

p=(p8)|b;

d=p0xff;

c=(p0xff00)8;

printf(“a=%d\nb=%d\nc=%d\nd=%d\n”,a,b,c,d);

}

c語言中的掩碼

注意0x是表示16進制數的意思,第四位是10進制的8,第五位是10進制的16,轉成16進制就是0x10,是沒錯的

C語言 數組問題

void out_set(unsigned char bit_id, bit value) {

if (bit_id = O_CNT) { //O_CNT=40

return;

}

if (value) {

out[bn[bit_id]] |= msk[bit_id]; //置位,將out數組的第bn[bit_id]位元組按照msk[bit_id]掩碼置位,假設bit_id=22,則bn[bit_id]=2,msk[bit_id]=0x40,就是把第2位元組的第6位設置為1,其他位不管out[2]變成:x1xxxxxx(x是原來的不變)

假設out[2]=0000 0000

out[bn[bit_id]] = out[bn[bit_id]] | msk[bit_id];就是

0000 0000 | 0100 0000 = 0100 0000

} else {

out[bn[bit_id]] = ~msk[bit_id]; //置0,將out數組的第bn[bit_id]位元組按照msk[bit_id]掩碼置0,假設bit_id=22,則bn[bit_id]=2,msk[bit_id]=0x40,就是把第2位元組的第6位設置為0,其他位不管out[2]變成:x0xxxxxx(x是原來的不變)

假設out[2]=1111 1111

out[bn[bit_id]] = out[bn[bit_id]] | ~msk[bit_id];就是

1111 1111 | 1011 1111 = 1011 1111

}

}

調用的時候就是這樣:

out_set(22, 1); //置位

out_set(22, 0); //置0

無頭無尾的,怎麼給你解釋?

這個不是數組的問題,應該是關於位運算的問題

—————————————————————————————–

bn表示第幾個位元組

msk就是掩碼

8個位元組,每個bit表示一個狀態:

1-有狀態(比如顯示紅色燈)

0-無狀態(比如關閉紅色燈)

#define OPENRED (data[bn[0]]|msk[0])

#define CLOSERED (data[bn[0]]|(~msk[0]))

unsigned char data[8]={1,2,3,4,5,6,7,8};

status = data[bn[i]] mask[i]; // 取狀態: 0/1

data[bn[i]] |= ~mask[i]; // 清除狀態:置0

data[bn[i]] |= mask[i]; // 設置狀態:置1

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/151088.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-10 01:12
下一篇 2024-11-10 01:12

相關推薦

  • 英語年齡用連字符號(Hyphenation for English Age)

    英語年齡通常使用連字符號表示,比如 “five-year-old boy”。本文將從多個方面探討英語年齡的連字符使用問題。 一、英語年齡的表達方式 英語中表…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python字符轉列表指南

    Python是一個極為流行的腳本語言,在數據處理、數據分析、人工智能等領域廣泛應用。在很多場景下需要將字符串轉換為列表,以便於操作和處理,本篇文章將從多個方面對Python字符轉列…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29
  • Python去掉數組的中括號

    在Python中,被中括號包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括號。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python計算中文字符個數

    本文將從多個方面對Python計算中文字符個數進行詳細的闡述,包括字符串長度計算、正則表達式統計和模塊使用方法等內容。 一、字符串長度計算 在Python中,計算字符串長度是非常容…

    編程 2025-04-29
  • Python中如何判斷字符為數字

    判斷字符是否為數字是Python編程中常見的需求,本文將從多個方面詳細闡述如何使用Python進行字符判斷。 一、isdigit()函數判斷字符是否為數字 Python中可以使用i…

    編程 2025-04-29
  • Python二維數組對齊輸出

    本文將從多個方面詳細闡述Python二維數組對齊輸出的方法與技巧。 一、格式化輸出 Python中提供了格式化輸出的方法,可以對輸出的字符串進行格式化處理。 names = [‘A…

    編程 2025-04-29

發表回復

登錄後才能評論