掩码数组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/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

发表回复

登录后才能评论