字符 赋值给INT 大小端模式 联合体 位域 等 基础知识简单整理

这篇博客介绍了C++中字符赋值给INT时的大小端模式处理,以及联合体和位域的概念。通过示例展示了如何利用联合体进行位域操作,并解释了位域的正负问题。此外,还探讨了大小端模式在处理整数时的不同表示,以及字符转INT时的符号位处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <cstdio>
#include <iostream>
#include <string>
#include <bitset>

using namespace std;
typedef unsigned int uint32_t;   
void inet_ntoa(uint32_t in)    
{    
	char b[18];    
	register char *p;    
	p = (char *)&in;    
#define UC(b) (((int)b)&0xff)    
	sprintf(b, "%x.%x.%x.%x\n", UC(p[0]), UC(p[1]), UC(p[2]), UC(p[3]));    
	printf(b);    
}    
int main()
{
	/**联合体与位域测试*/
	union //联合体总共用一个存储空间,每个变量的起始地址相同, char 类型 最大一个字节长度, 8位
	{
		struct //占6位
		{
			unsigned char a:1;
			char b:2;
			char c:3;
		}d;//位域 d 位域的正负与编译器有关, 尽量使用 无符号类型数据表示 位域
		char e;
	} f;
	f.e = -2;
	//二进制 表示 : 1111 1110(0000 0010 取反 加 1 ) 
	// <---- 内存增大
	//	c   b  a
	//  |   |  |
	//111  11  0  
	printf("a = %d, b = %d, c = %d \n",f.d.a, f.d.b, f.d.c);//输出为 0 , -1 , -1;
	printf(" e = %p, d = %p\n", &f.e, &f.d); // 两者地址一样 001DF90F

	f.e = -102;
	//二进制 表示 : 1011 0110(0100 1010 取反 加 1 ) 
	// <---- 内存增大
	//	c   b  a
	//  |   |  |
	//011  01  0  
	printf("a = %d, b = %d, c = %d \n",f.d.a, f.d.b, f.d.c);//输出为 0 , 1 , 3;
	printf(" e = %p, d = %p\n", &f.e, &f.d); // 两者地址一样 001DF90F

	/** 大小端模式测试*/
	inet_ntoa(0x12345678);//大端模式: 高字节存低地址, 低字节存高地址; 输出为12 34 56 78(大端) 78 56 34 12 (小端);  
	inet_ntoa(0x87654321);//小端模式: 低字节存低地址	高字节存高地址  输出为 21 43 65 87(小端) 87 65 43 21 (大端);    
	
	/**字符转INT*/// char 类型有符号 表示的范围为 -127 - 128 之间
	char a1 = 128;
	bitset<8> b1(128);
	cout << b1 << endl; // 1000 0000;符号位 1, 数据量 为 128 符号位和数值为重合
	char a2 = -129;
	bitset<8> b2(-129);// 1000 0001;(129 二进制表示)
	cout << b2 << endl;// 0111 1111; 补码截断后剩余数据 符号位为 0
	
	int a11 = a1;
	int a22 = a2;
	printf("a11 = %d, a22 = %d\n",a11, a22);//a11 = -128 , a22 = 127; //符号位 使用char 的符号位
	
	return 0;
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值