c语言操作符(上
目录
编辑
原码、反码、补码
1、正数
2、负数
3、二进制计算1-1
移位操作符
1、<<左移操作符
2、>>右移操作符
位操作符&、|、^、~
1、&按位与
2、|按位或
3、^按位异或
特点
4、~按位取反
原码、反码、补码
1、正数
原码 反码 补码相同,最高位为符号位,0正1负
例:10的原码 反码 补码如下(32位二进制表示)
00000000000000000000000000001010 原码 反码 补码
2、负数
原码 变 反码:符号位不变,其他位取反
反码 变 补码:反码+1
其中 原码和补码的相互转换方法一致 符号位不变,其他位取反,再+1
例:-10的原码 反码 补码如下
10000000000000000000000000001010 原码
11111111111111111111111111110101 反码
11111111111111111111111111110110 补码
3、二进制计算1-1
我们都知道1-1=1+(-1)=0,计算机计算是利用补码的
00000000000000000000000000000001 1的原码
10000000000000000000000000000001 -1的原码
11111111111111111111111111111110 -1的反码
11111111111111111111111111111111 -1的补码
1和-1的补码相加得
100000000000000000000000000000000 33位,多的一位向左边移动
00000000000000000000000000000000 1-1的结果 0
移位操作符
注意:1.操作数只能是整数,移动的是补码
2.不能移动负数位(如n>>-1)
1、<<左移操作符
移位规则:左移抛弃,右移补0
如图将n=10左移1位,以下展示左移细节
00000000000000000000000000001010 n 10(补码)
00000000000000000000000000001010 左移之后
00000000000000000000000000010100 m 20 左边的0舍弃,右边补0

2、>>右移操作符
移位规则:有逻辑右移和算数右移两种
1.逻辑右移:左边补0,右边丢弃
如图将n=10逻辑右移1位,以下展示右移细节
00000000000000000000000000001010 n 10(补码)
00000000000000000000000000001010 右移之后
00000000000000000000000000000101 m 5 左边补0,右边的0舍弃

2.算数右移:左边用原符号位填充,右边丢弃(VS中默认算数右移)
如图将n=10算数右移1位,以下展示右移细节
11111111111111111111111111110110 n -10(补码)
11111111111111111111111111110110 右移之后
11111111111111111111111111111011 m 5 左边补1,右边的0舍弃

位操作符&、|、^、~
注意:操作数只能是整数,操作的都是二进制位
1、&按位与
运算规则:补码对应的二进制位进行“与”运算,即有0则为0,同为1则为1,可以理解为乘法。
如图将a&b,以下展示细节
00000000000000000000000000000011 a 3的补码
11111111111111111111111111111011 b -5的补码
00000000000000000000000000000011 c a&b的补码
00000000000000000000000000000011 c的原码 3

2、|按位或
运算规则:补码对应的二进制位进行“或”运算,即有1则为1,同为0则为0,可以理解为加法。
如图将a|b,以下展示细节
00000000000000000000000000000011 a 3的补码
11111111111111111111111111111011 b -5的补码
11111111111111111111111111111011 c a|b的补码
10000000000000000000000000000101 c的原码 -5

3、^按位异或
运算规则:补码对应的二进制位进行“异或”运算,即相同为0,相异为1。
如图将a^b,以下展示细节
00000000000000000000000000000011 a 3的补码
11111111111111111111111111111011 b -5的补码
11111111111111111111111111111000 c a^b的补码
10000000000000000000000000001000 c的原码 -8

特点
a^a=0
a^0=a
4、~按位取反
运算规则:补码对应的二进制位进行“取反”运算,即1变为0,0变为1。
如图b=~a,以下展示细节
00000000000000000000000000000001 a 1的补码
11111111111111111111111111111110 b ~a的补码
10000000000000000000000000000010 b的原码 -2

相关文章:
c语言操作符(上
目录 编辑 原码、反码、补码 1、正数 2、负数 3、二进制计算1-1 移位操作符 1、<<左移操作符 2、>>右移操作符 位操作符&、|、^、~ 1、&按位与 2、|按位或 3、^按位异或 特点 4、~按位取反 原码、反码、补码 1、正数 原码 反码 补码相同…...
Linux后台长时间以及定时运行python脚本
1.使用nohup命令:nohup命令用于运行一个命令,在用户退出登录后仍然保持运行。 在命令行输入:nohup python绝对路径 脚本的绝对路径 & python的绝对路径,在命令行输入:which python 例如:nohup /usr…...
计算机二级数据库之数据模型
数据模型 模型的概念 模型的介绍模型是对现实世界特征的模拟和抽象, 数据模型的概念: 数据模型是对现实世界中数据特征的抽象,描述的是数据的共性。 数据模型是用来在数据库中抽象、表示和处理现实世界中的数据和信凹。 其相关的共同特…...
Linux多线程[二]
引入知识 进程在线程内部执行是OS的系统调度单位。 内核中针对地址空间,有一种特殊的结构,VM_area_struct。这个用来控制虚拟内存中每个malloc等申请的空间,来区别每个malloc的是对应的堆区哪一段。OS可以做到资源的精细度划分。 对于磁盘…...
宿舍报修|宿舍报修小程序|基于微信小程序的宿舍报修系统的设计与实现(源码+数据库+文档)
宿舍报修小程序目录 目录 基于微信小程序的宿舍报修系统的设计与实现 一、前言 二、系统功能设计 三、系统实现 1、学生信息管理 2 维修人员管理 3、故障上报管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推…...
浅谈开源软件的影响力
目录 1. 技术发展推动者: 2. 社区生态构建者: 3. 经济模式创新者: 4. 全球合作促进者: 5. 安全性贡献者: 6. 教育与人才培养: 7. 总结来说 不是每个人都能做自己想做的事,成为自己想成为…...
C++的多态(Polymorphism)
C中的多态(Polymorphism)是面向对象编程的一个重要概念,它允许以不同的方式使用同一个接口来处理不同类型的对象。多态性可以通过函数重载、运算符重载和虚函数实现。 多态的基本概念是:通过基类的指针或引用,可以在运…...
coding持续集成构建环境自定义node版本
coding持续集成构建环境自定义node版本 解决方案 只需要在构建计划的编写过程中增加一个如下的 stage,具体 nodejs 版本下载地址可参考 https://nodejs.org/en/download/releases/ 这里。 stage(toggle Node.js version) {steps {sh rm -rf /usr/lib/node_modules…...
【Java程序设计】【C00252】基于Springboot的实习管理系统(有论文)
基于Springboot的实习管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的实习管理系统 本系统分为前台功能模块、管理员功能模块、教师功能模块、学生功能模块以及实习单位功能模块。 前台功能模块…...
100条经典C语言题第一天(1-10)
准备复习一下C语言,刷一些和面试相关的问题。 请填写 bool, float, 指针变量 与 “零值”比较的if语句 A.Bool flag 与 “零值”比较的if语句 1为true 0为false 分析 这里的flag 是布尔类型的变量 标准…...
传输频宽是啥?对网速影响有多大?
频宽,即WIFI频道宽度,又称为WIFI信道宽度,是WiFi Channel width的缩写。从科学的定义来说,Wi-Fi频道宽度,是指Wi-Fi无线信号在频谱上所占用的带宽大小。它决定了Wi-Fi网络的数据传输速率和稳定性,一般有20M…...
【C++函数探幽】内联函数inline
📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1. 前言2.概念3.特性…...
C#面:什么是Code-Behind技术
Code-Behind技术是一种在Web开发中常用的技术,它将前端页面与后端代码分离,使得前端页面的设计和后端代码的逻辑处理可以分别进行。在Code-Behind模式下,前端页面通常是一个标记语言(如HTML或ASPX),而后端代…...
【ES6】Promise
Promise 回调地狱 const fs require(fs);fs.readFile(./a.txt, utf-8, (err, data) > {if(err) throw err;console.log(data);fs.readFile(./b.txt, utf-8, (err, data) > {if(err) throw err;console.log(data);fs.readFile(./c.txt, utf-8, (err, data) > {if(er…...
Leetcode 3035. Maximum Palindromes After Operations
Leetcode 3035. Maximum Palindromes After Operations 1. 解题思路2. 代码实现 题目链接:3035. Maximum Palindromes After Operations 1. 解题思路 这一题的话因为可以任意交换,因此事实上要考察回文的最大个数,我们只需要统计所有单词当…...
SCM供应链系统:一文读懂,需要优化升级的看过来。
单一的供应链系统平时很少碰到,但是很多B端系统中都会集成供应链的功能,贝格前端工场尝试对SCM做一下扫盲性的介绍,如有管理系统界面是优化和升级的需求,欢迎私信我们,共同探讨。 一、定义与由来 SCM有时也可以指供应…...
WSL外部SSH连接有效方法
前言 wsl作为windows下使用linux平台有效的手段之一,本文可以让win作为工作站,外部系统用来连接win下的wsl系统。 自动启动服务脚本 https://zhuanlan.zhihu.com/p/47733615 开机自启端口转发 wslname "Ubuntu-20.04" 要转发端口的Linux…...
MATLAB 1:基础知识
MATLAB中的数据类型主要包括数值类型、逻辑类型、字符串、函数句柄、结构体和单元数组类型。这六种基本的数据类型都是按照数组形式存储和操作的。 MATLAB中还有两种用于高级交叉编程的数据类型,分别是用户自定义的面向对象的用户类类型和Java类类型。 1.1.1数值类…...
django安装使用
Django 是一个高级的 Python Web 框架,用于构建安全和可维护的网站。以下是如何安装和使用 Django 的步骤。 一:安装 确保你安装了 Python 在 Django 3.x 中,官方支持 Python 3.6, 3.7, 3.8, 3.9, 和 3.10。你可以使用 python --version 或…...
基于LightGBM的回归任务案例
在本文中,我们将学习先进的机器学习模型之一:Lightgbm。在对XGB模型进行了越来越多的改进以获得更好的性能之后,XGBoost是一种极限梯度提升机器,但通过lightgbm,我们可以在没有太多计算的情况下实现类似或更好的结果&a…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

