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

这篇博客介绍了C++中字符赋值给INT时的大小端模式处理,以及联合体和位域的概念。通过示例展示了如何利用联合体进行位域操作,并解释了位域的正负问题。此外,还探讨了大小端模式在处理整数时的不同表示,以及字符转INT时的符号位处理。
摘要由CSDN通过智能技术生成
#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

	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值