search

Does Linux C language have bits?

Mar 28, 2023 am 10:57 AM
linuxc languagebit

Linux C language has bit; in the microcontroller C language, bit is a new keyword, often used to define a "bit variable"; the method of defining bit type data in C language is: 1. Through sbit Or bit definition; 2. Define through bit field (in structure); 3. Define through combined bit operators.

Does Linux C language have bits?

#The operating environment of this tutorial: linux5.9.8 system, Dell G3 computer.

Does Linux C language have bits?

have.

C language defines bit type data:

1. Definition through sbit or bit

sbit is mapped to the IO port (IO such as P1^1 The "bit" of the port)

bit is in the bit-addressable space in RAM and is generally used as a flag bit for program judgment.

Consider that one of them is external (sbit) and the other is internal (bit).

In the microcontroller C language, bit is a new keyword, often used to define a "bit variable"

2. Define through bit fields (in structures)

Definition of bit fields and description of bit field variables Bit field definition is similar to structure definition, and its form is:

 struct bit field structure name

 {Bit field list};

The form of the bit field list is: Type specifier bit domain name: bit field length

For example:

struct bs 
{ 
 int a:8; 
 int b:2; 
 int c:6; 
};

The description of bit field variables is the same as the description of structure variables. You can define first and then explain, define and explain at the same time, or explain directly. For example:

struct bs 
{ 
 int a:8; 
 int b:2; 
 int c:6; 
}data;

It indicates that data is a bs variable, occupying two bytes in total. Bit field a occupies 8 bits, bit field b occupies 2 bits, and bit field c occupies 6 bits. There are several explanations for the definition of bit fields:

1. A bit field must be stored in the same byte and cannot span two bytes. If the remaining space of one byte is not enough to store another bit field, the bit field should be stored from the next unit. You can also intentionally start a bit field from the next unit. For example:

struct bs 
{ 
 unsigned a:4 
 unsigned :0 /*空域*/ 
 unsigned b:4 /*从下一单元开始存放*/ 
 unsigned c:4 
}

In this bit field definition, a occupies 4 bits of the first byte, fill in the last 4 bits with 0 to indicate not used, b starts from the second byte, occupying 4 bits, and c occupies 4 bits Bit.

 2. Since the bit field is not allowed to span two bytes, the length of the bit field cannot be greater than the length of one byte, that is, it cannot exceed 8 binary bits.

 3. The bit field can have no bit domain name. At this time, it is only used for filling or adjusting the position. Unnamed bit fields cannot be used. For example:

struct k 
{ 
 int a:1 
 int :2 /*该2位不能使用*/ 
 int b:3 
 int c:2 
};

From the above analysis, it can be seen that bit field is essentially a structure type, but its members are allocated in binary terms.

2. The use of bit fields

The use of bit fields is the same as the use of structure members. Its general form is: Bit field variable name • Bit domain name Bit fields allow output in various formats.

main(){ 
 struct bs 
 { 
  unsigned a:1; 
  unsigned b:3; 
  unsigned c:4; 
 } bit,*PBit; 
 bit.a=1; 
 bit.b=7; 
 bit.c=15; 
 printf("%d,%d,%d\n",bit.a,bit.b,bit.c); 
 PBit=&bit; 
 PBit->a=0; 
 PBit->b&=3; 
 PBit->c|=1; 
 printf("%d,%d,%d\n",PBit->a,PBit->b,PBit->c); 
}

The above example program defines the bit field structure bs, and the three bit fields are a, b, and c. The variable bit of type bs and the pointer variable PBit pointing to type bs are explained. This means that bitfields can also use pointers.

Lines 9, 10, and 11 of the program assign values ​​to three bit fields respectively. (It should be noted that the assignment cannot exceed the allowable range of the bit field) Line 12 of the program outputs the contents of the three fields in integer format. Line 13 sends the address of the bit field variable bit to the pointer variable PBit. Line 14 uses a pointer to reassign bit field a to 0. Line 15 uses the compound bit operator "&=". This line is equivalent to: PBit->b=PBit->b&3. The original value in bit field b is 7, and the result of the bitwise AND operation with 3 is 3 (111&011=011, decimal value is 3). Similarly, the compound bit operation "|=" is used in line 16 of the program, which is equivalent to: PBit->c=PBit->c|1 and the result is 15. Line 17 of the program outputs the values ​​of these three fields using pointers.

The main purpose of using bit fields is to compress storage. The general rules are:

1) If the types of adjacent bit fields are the same and the sum of their bit widths is less than the sizeof size of the type , then the following field will be stored immediately next to the previous field until it cannot be accommodated;

2) If the types of adjacent bit field fields are the same, but the sum of their bit widths is greater than the sizeof size of the type, then the following field The field will start from a new storage unit with an offset that is an integer multiple of its type size;

3) If bitfield fields are interspersed with non-bitfield fields, no compression will be performed;

4) The total size of the entire structure is an integer multiple of the size of the widest basic type member.

3. Operate by combining bit operators

#define Setbit(x,y)  (x|=(0x01<<y))   //置位
#define Clrbit(x,y)  (x&=(~(0x01<<y)))  //复位(清零)
#define Chkbit(x,y)  (x&(0x01<<y))     //检位

Recommended learning: "linux video tutorial"

The above is the detailed content of Does Linux C language have bits?. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Linux Operations: Utilizing the Maintenance ModeLinux Operations: Utilizing the Maintenance ModeApr 19, 2025 am 12:08 AM

Linux maintenance mode can be entered through the GRUB menu. The specific steps are: 1) Select the kernel in the GRUB menu and press 'e' to edit, 2) Add 'single' or '1' at the end of the 'linux' line, 3) Press Ctrl X to start. Maintenance mode provides a secure environment for tasks such as system repair, password reset and system upgrade.

Linux: How to Enter Recovery Mode (and Maintenance)Linux: How to Enter Recovery Mode (and Maintenance)Apr 18, 2025 am 12:05 AM

The steps to enter Linux recovery mode are: 1. Restart the system and press the specific key to enter the GRUB menu; 2. Select the option with (recoverymode); 3. Select the operation in the recovery mode menu, such as fsck or root. Recovery mode allows you to start the system in single-user mode, perform file system checks and repairs, edit configuration files, and other operations to help solve system problems.

Linux's Essential Components: Explained for BeginnersLinux's Essential Components: Explained for BeginnersApr 17, 2025 am 12:08 AM

The core components of Linux include the kernel, file system, shell and common tools. 1. The kernel manages hardware resources and provides basic services. 2. The file system organizes and stores data. 3. Shell is the interface for users to interact with the system. 4. Common tools help complete daily tasks.

Linux: A Look at Its Fundamental StructureLinux: A Look at Its Fundamental StructureApr 16, 2025 am 12:01 AM

The basic structure of Linux includes the kernel, file system, and shell. 1) Kernel management hardware resources and use uname-r to view the version. 2) The EXT4 file system supports large files and logs and is created using mkfs.ext4. 3) Shell provides command line interaction such as Bash, and lists files using ls-l.

Linux Operations: System Administration and MaintenanceLinux Operations: System Administration and MaintenanceApr 15, 2025 am 12:10 AM

The key steps in Linux system management and maintenance include: 1) Master the basic knowledge, such as file system structure and user management; 2) Carry out system monitoring and resource management, use top, htop and other tools; 3) Use system logs to troubleshoot, use journalctl and other tools; 4) Write automated scripts and task scheduling, use cron tools; 5) implement security management and protection, configure firewalls through iptables; 6) Carry out performance optimization and best practices, adjust kernel parameters and develop good habits.

Understanding Linux's Maintenance Mode: The EssentialsUnderstanding Linux's Maintenance Mode: The EssentialsApr 14, 2025 am 12:04 AM

Linux maintenance mode is entered by adding init=/bin/bash or single parameters at startup. 1. Enter maintenance mode: Edit the GRUB menu and add startup parameters. 2. Remount the file system to read and write mode: mount-oremount,rw/. 3. Repair the file system: Use the fsck command, such as fsck/dev/sda1. 4. Back up the data and operate with caution to avoid data loss.

How Debian improves Hadoop data processing speedHow Debian improves Hadoop data processing speedApr 13, 2025 am 11:54 AM

This article discusses how to improve Hadoop data processing efficiency on Debian systems. Optimization strategies cover hardware upgrades, operating system parameter adjustments, Hadoop configuration modifications, and the use of efficient algorithms and tools. 1. Hardware resource strengthening ensures that all nodes have consistent hardware configurations, especially paying attention to CPU, memory and network equipment performance. Choosing high-performance hardware components is essential to improve overall processing speed. 2. Operating system tunes file descriptors and network connections: Modify the /etc/security/limits.conf file to increase the upper limit of file descriptors and network connections allowed to be opened at the same time by the system. JVM parameter adjustment: Adjust in hadoop-env.sh file

How to learn Debian syslogHow to learn Debian syslogApr 13, 2025 am 11:51 AM

This guide will guide you to learn how to use Syslog in Debian systems. Syslog is a key service in Linux systems for logging system and application log messages. It helps administrators monitor and analyze system activity to quickly identify and resolve problems. 1. Basic knowledge of Syslog The core functions of Syslog include: centrally collecting and managing log messages; supporting multiple log output formats and target locations (such as files or networks); providing real-time log viewing and filtering functions. 2. Install and configure Syslog (using Rsyslog) The Debian system uses Rsyslog by default. You can install it with the following command: sudoaptupdatesud

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools