位运算整理与总结

阅读次数: 334

  • A+
所属分类:C语言 语言学习

内存单元,即1B,我们说char型占一个内存单元(1B),而short型占2个内存单元。1B被当成整体来看,但不要忘记有下边的等式成立

1B = 8 bits

1个字节有8个位,每个位有0,1两个取值,从这个角度上说,一个字节所能包含的意义似乎比预想的要大的多。

位运算输出原码或补码

不多说直接上代码

#include<stdio.h>
#include<stdlib.h>


struct bits
{
	unsigned char b1 : 1;//1位 高位在后
	unsigned char b2 : 1;
	unsigned char b3 : 1;
	unsigned char b4 : 1;
	unsigned char b5 : 1;
	unsigned char b6 : 1;
	unsigned char b7 : 1;
	unsigned char b8 : 1; //地位在前

};

void main(){
	int num = 1;// 0000 0000 0000 0000    0000 0000 0000 0001
	// 0000 0001 地位
	// 0000 0000
	// 0000 0000
	// 0000 0000 高位

	printf("%d\n", sizeof(struct bits));// 一个字节

	struct bits *pbit;
	pbit = (struct bits *)malloc(sizeof(struct bits)*4); //*4 4个字节

	int *pint;

	pint = (int *)pbit;//共享内存

	*pint = 0;//初始化

	scanf_s("%d", pint);//根据地址 初始化


	for (int i = 3; i >= 0; i--)
	{
		printf("%d%d%d%d% d%d%d%d",
			pbit[i].b8,
			pbit[i].b7,
			pbit[i].b6,
			pbit[i].b5,
			pbit[i].b4,
			pbit[i].b3,
			pbit[i].b2,
			pbit[i].b1);
		printf("\n");
	}

	float fl;

	printf("\n");

	printf("%d\n", sizeof(fl));//四个字节
	scanf_s("%f", &fl);

	unsigned char *p = (unsigned char*)&fl;//共享内存
	// 让p 的地址等于 fl的地址  然后让其 以 char 类型来计算
	// 1111 1111 一个字节 A = p+0 = p[0]
	// 1111 1111 一个字节 B = p+1 = p[1]
	// 1111 1111 一个字节 C = p+2 = p[2]
	// 1111 1111 一个字节 D = p+3 = p[3]

	// 1&1=1
	// 0&1=0 与1& 不变化
	// 0&0=0
	// 1&0=0 与0& 都为零
	
	// 所以就可以打印了
	for (int i = 3; i >= 0; i--){
		unsigned char chs = p[i];//按照字节取出数据
		for (int j = 7; j >= 0; j--){
			// 1011 0010   chs
			// 0000 0001经过 <<7后变成  1000 0000
			// 1000 0000 第一次结果 非零
			//第二次
			//1011 0010
			//0100 0000
			//0000 0000 //结果0
			//第三次
			//1011 0010
			//0010 0000 
			//0010 0000 //结果非零
			if (chs &(1 << j)){
				printf("1");
			}
			else{
				printf("0");
			}
			if (j == 4){
				printf(" ");
			}
		}
		printf("\n");
	}

	system("pause");
}

持续更新中

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: