2.操作符详解

news2024/12/24 2:06:12

1.10进制转二进制方法

所以125的二进制就是1111101

2.2进制转8进制:

从2进制序列中右边最低位开始向左每3个2进制位换算为一个8进制位,剩余不够3个2进制位的直接换算

例:01101011转为01 101 011

即1 5 3 

即8进制的153

还原回去的话:

将3化为011放最右边,5化为101放前者的左边,1化为1放前者的前边

3.而二进制转16进制:

从2进制序列中右边最低位开始向左每4个2进制位换算成一个8进制位,剩余不够4个2进制位的直接换算

例:01101011

化为0110 1011

即6b

还原回去的话:

将b化为1011放最右边,6化为110放前者的左边

4.有符号 的整形的二进制位最高位是符号位,其余是数值位

5.1个整形32个bit

6.原码除了符号位不变,其他位按位取反得到的是反码

7.原码取反(符号位不变)加 1,得到补码,补码取反(符号位不变)加一,得到原码

8.整数转化为补码存储入计算机,计算机内部对整形的操作都是基于补码进行的

9.移位操作符只能对整数进行操作

10.左移操作符:左边丢弃,右边补零(对补码进行操作,已核实) <<

11.右移操作符:(大多编译器都用的算术右移) >>

逻辑右移:左边用零补充,右边丢弃

算术右移:左边用原有的符号填充,右边丢弃

12.真正打印出来的还是原码

13.不要用移位操作符移动负数位

14.

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int main()
{
	int n = 10;
	printf("%d\n", n << 62);








	return 0;
}

这是标准未定义的,整形一共就32个bit

15.位操作符:&(按位与), |(按位或), ^(按位异或), ~(按位取反)

16.&&和 ||是逻辑操作符

17.位操作符的操作数必须是整数

18.& :

int c = a & b; 

二者的补码化合,

有 0则 0,全 1才 1(符号位也遵从),

存入C中

19.| :

int c = a | b;

二者的补码化合,

有 1则 1,全 0才 0(符号位也遵从),

存入C中

20.^ :

int c = a | b;

二者的补码化合,

同 0异 1(符号位也遵从),

存入C中

21.~ :

int a = 10;

int b = ~a;

得到的b是a的补码(符号位也是)按位取反得到的值

22.一道 面试 题:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//不创建临时变量来交换两个整形变量的值
int main()
{
	int a = 10;
	int b = 20;
	//a ^ a == 0
	//0 ^ a == a
	//^ 服从交换律 
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("%d\n", a);
	printf("%d\n", b);







	return 0;
}

方法2:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//不创建临时变量来交换两个变量的值
int main()
{
	int a = 10;
	int b = 20;
	a = a + b;
	b = a - b;
	a = a - b;
	printf("%d\n", a);
	printf("%d\n", b);





	return 0;
}

异或的方法不会有溢出的风险,但是效率低点

23.题

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int main()
{
	//求一个整数存储在内存中的二进制位1的个数
	//下列代码,负数也行
	int ret = -1;
	//scanf("%d", &ret);
	int i = 0;
	int n = 32;
	int count = 0;
	for (i = 0; i < n; i++)
	{
		int tem = 0;
		tem = ret & 1;
		if (tem == 1)
		{
			count++;
		}
		ret >>= 1;



	}
	

	printf("%d\n", count);





	return 0;
}

另一种方法:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int my_count(unsigned int n)//此处传来的是-1的补码
{
	//从问题:
	//得到一个十进制的整数中的每一位用方法:/ 10和% 10
	//处得到启发
	//得到一个十进制的整数中的每一位用方法:/ 2和% 2
	int count = 0;
	int i = 0;
	while (n != 0)
	{
		if (n % 2 == 1)
		{
			count++;
		}
		n = n / 2;
	}
	return count;
}
int main()
{
	//求一个整数存储在内存中的二进制位1的个数
	//下列代码,负数也行
	int count = my_count(-1);
	printf("%d", count);
	return 0;
}

另一个方法:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int my_count(int n)
{
	int count = 0;
	while (n != 0)
	{
		n = n & (n - 1);
		count++;
	}
	return count;
}
int main()
{
	//求一个整数存储在内存中的二进制位1的个数
	//下列代码,负数也行
	int count = my_count(10);
	printf("%d", count);
	return 0;
}

上边的那个题做一个知识的延伸:

判断一个数是否是2的次方数DA搜:

24.做题时,一开始想不到的话就先写出前几个数据以看规律

25.

00000000000000000000000000000100

通过 ~ 得到

11111111111111111111111111111011

26.

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int func(int m, int n,int t)
{
	int i = 0;
	if (t == 1)
	{
		t = t << (n - 1);
		m = m | t;
	}
	else
	{
		t = -1;
		t = t & (t - 1);
		t = t << (n - 1);
		m = m & t;
		int tem = 1;
		//调回去
		int i = 0;
		for (i = 0; i < n - 1; i++)
		{
			m = m | (tem << i);
		}
	}
	return m;


}

int main()
{

	//把一个数的某个二进制位制 0或制 1
	int m = 0;
	scanf("%d", &m);//数字
	int n = 0;
	scanf("%d", &n);//第几位
	int i = 0;
	for (i = 31;i >= 0 ; i--)//打印一个整数存储在内存中的二进制位
	{
		printf("%d ", (m >> i) & 1);
	}

	printf("\n");
	int e = func(m, n, 0);//第三个参数为要制为1还是0
	for (i = 31; i >= 0; i--)//打印一个整数存储在内存中的二进制位
	{
		printf("%d ", (e >> i) & 1);
	}
	
	
	return 0;
}

上述函数还是少了两个功能:不能制正数的0,不能制负数的1,要加上去的话无非就是要多加上两个条件而已

27.逗号表达式从右往左执行,拿到的是最后一个值.注:前边的表达式要都执行一遍

28.5也可以是操作数

29.sixeof是一个单目操作符

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1307890.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++进阶篇】二叉搜索数

目录 前言&#xff1a; 以后我们要学map&#xff0c;set&#xff0c;AVL&#xff0c;红黑数所以必须要有二叉搜索数做铺垫 1、二叉搜索树概念 2.二叉搜索树操作 1.二叉搜索树的查找 a、从根开始比较&#xff0c;查找&#xff0c;比根大则往右边走查找&#xff0c;比根小则…

QEMU源码全解析 —— virtio(5)

接前一篇文章&#xff1a; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 特此致谢&#xff01; 上一回以virtio balloon设备为例概述了具体的virtio设备、virtio PCI代理…

Proxmox创建Windows虚拟机

文章目录 下载ISO安装文件上传 下载ISO安装文件 下载地址&#xff1a;https://www.xitongzhijia.net/ 也可去官网进行下载 上传 将下载的ISO文件上传到Proxmox 选择ISO文件进行上传 上传后再ISO镜像中可以看到安装文件 点击创建虚拟机 填写名称&#xff0c;不能填写中文 镜…

使用NCNN在华为M5部署Yolov5

使用NCNN在华为M5平板部署Yolov5 一、NCNN二、下载解压NCNN三、下载ncnn-android-yolov5工程四、下载Android Studio[前提已经配置了jdk版本]1、安装NDK、Cmske&#xff0c;这个必须要安装&#xff0c;2、安装Android 五、构建工程六、修改源码七、重新ysnc project八、安装APP…

18个非技术面试题

请你自我介绍一下你自己&#xff1f; 这道面试题是大家在以后面试过程中会常被问到的&#xff0c;那么我们被问到之后&#xff0c;该如果回答呢&#xff1f;是说姓名&#xff1f;年龄&#xff1f;还是其他什么&#xff1f; 最佳回答提示&#xff1a; 一般人回答这个问题往往会…

IDEA中工具条中的debug按钮不能用了显示灰色

IDEA中工具条中的debug按钮不能用了显示灰色 1. 问题描述 IDEA上的DEBUG按钮突然变成了灰色&#xff1a; 2. 解决办法 一通搜索&#xff0c;终于找到解决办法 点击 File -> Project Structure如下图操作 3. 重启&#xff0c;解决 4. 参考 https://www.cnblogs.com…

linux下sys目录与proc目录的作用

sys目录作用 在Linux系统中&#xff0c;/sys目录是一个特殊的虚拟文件系统&#xff08;sysfs&#xff09;&#xff0c;用于提供对内核和设备的运行时信息的访问。它是在内核中运行的驱动程序和子系统的接口&#xff0c;可以用于获取和配置系统的硬件和内核信息。 以下是/sys目…

Kubernetes实战(九)-kubeadm安装k8s集群

1 环境准备 1.1 主机信息 iphostname10.220.43.203master10.220.43.204node1 1.2 系统信息 $ cat /etc/redhat-release Alibaba Cloud Linux (Aliyun Linux) release 2.1903 LTS (Hunting Beagle) 2 部署准备 master/与slave主机均需要设置。 2.1 设置主机名 # master h…

2023年12月14日 十二生肖 今日运势

小运播报&#xff1a;2023年12月14日&#xff0c;星期四&#xff0c;农历十一月初二 &#xff08;癸卯年甲子月丙午日&#xff09;&#xff0c;法定工作日。 红榜生肖&#xff1a;羊、狗、虎 需要注意&#xff1a;牛、马、鼠 喜神方位&#xff1a;西南方 财神方位&#xff…

004 Windows NTFS文件夹权限

一、NTFS文件权限&#xff1a; NTFS&#xff08;New Technology File System&#xff09;是Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式&#xff0c;提供长文件名、数据保护和恢复&#xff0c;能通过目录和文件许可…

实操Nginx(4层代理+7层代理)+Tomcat多实例部署,实现负载均衡和动静分离

目录 前言 一、tomcat多实例部署 步骤一&#xff1a;先安装jdk&#xff0c;设置jdk的环境变量&#xff0c;验证是否安装完成&#xff08;192.168.20.8&#xff09; 步骤二&#xff1a;安装tomcat&#xff08;192.168.20.18&#xff09; 步骤三&#xff1a;安装tomcat多实例…

微服务中如何保证接口的安全性?[基于DDD和微服务的开发实战]

大家好&#xff0c;我是飘渺。如果你的微服务需要向第三方开放接口&#xff0c;如何确保你提供的接口是安全的呢&#xff1f; 1. 什么是安全接口 通常来说&#xff0c;要将暴露在外网的 API 接口视为安全接口&#xff0c;需要实现防篡改和防重放的功能。 1.1 什么是篡改问题…

【Linux】多线程编程

目录 1. 线程基础知识 2. 线程创建 3. 线程ID&#xff08;TID&#xff09; 4. 线程终止 5. 线程取消 6. 线程等待 7. 线程分离 8. 线程互斥 8.1 初始化互斥量 8.2 销毁互斥量 8.3 互斥量加锁和解锁 9. 可重入和线程安全 10. 线程同步之条件变量 10.1 初始化条件变…

k8s安装Ingress-Nginx

目前&#xff0c;DHorse(https://gitee.com/i512team/dhorse)只支持Ingress-nginx的Ingress实现&#xff0c;下面介绍Ingress-nginx的安装过程。 下载安装文件 首先&#xff0c;需要匹配Ingress-nginx版本和kubernetes版本。 在https://github.com/kubernetes/ingress-nginx可…

【UE5 Niagara】烟雾弹效果

效果 步骤 1. 新建一个工程&#xff0c;创建Basic关卡 2. 新建一个Actor蓝图&#xff0c;这里命名为“BP_SmokeBomb” 打开“BP_SmokeBomb”&#xff0c;添加一个静态网格体和一个发射物移动组件&#xff0c;静态网格体使用圆柱模型 选中发射物移动组件&#xff0c;设置初始速…

XSS防御:内容安全策略 CSP工作原理、配置技巧与最佳实践

前言 公司部门安全合规改造计划&#xff0c;要求所有的Web站点统一添加CSP规则。对于CSP机制我只是之前在应付面试的时候背过相关的概念&#xff0c;并没有真正在项目中实践过。所以希望借助本次改造任务好好理解并实践CSP机制。 什么是CSP CSP的全称是 Content Security Po…

算法通关村第十三关—数字与数学高频问题(白银)

数字与数学高频问题 一、数组实现加法专题 1.1 数组实现整数加法 先看一个用数组实现逐个加一的问题。LeetCode66.具体要求是由整数组成的非空数组所表示的非负整数&#xff0c;在其基础上加一。这里最高位数字存放在数组的首位&#xff0c;数组中每个元素只存储单个数字。并且…

TrustGeo代码理解(二)test.py

代码链接&#xff1a;https://github.com/ICDM-UESTC/TrustGeo 一、加载检查点&#xff08;checkpoint&#xff09;并进行测试 # -*- coding: utf-8 -*-"""load checkpoint and then test """ 该脚本的目的是加载之前训练过的模型的检查点&am…

Visual Studio使用Web Deploy发布.NET Web应用到指定服务器的IIS中

前言 今天要讲的是在Window 2008 R2版本的服务器下如何配置Web Deploy&#xff0c;和Visual Studio使用Web Deploy发布.NET Web应用到指定服务器的IIS中。 因为历史原因项目只能使用这个版本的服务器&#xff0c;当然使用其他服务器版本配置流程也是一样的。 Web Deploy介绍 …

c语言结构体调用格式与对齐

1.声明形式&#xff1a; struct 结构体名字 { 结构体成员 }结构体变量名&#xff1b; 2.赋值方法 3.结构体对齐&#xff1a; 1.起始偏移量&#xff1a;默认结构体第一个元素对齐0起始偏移量&#xff0c;第一个元素占一个字节&#xff0c;此时偏移量为1. 2.标准数&#xff…