c语言操作符(上

news2024/11/27 18:35:58


目录

​编辑

原码、反码、补码

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

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

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

相关文章

算法沉淀——字符串(leetcode真题剖析)

算法沉淀——字符串 01.最长公共前缀02.最长回文子串03.二进制求和04.字符串相乘 01.最长公共前缀 题目链接&#xff1a;https://leetcode.cn/problems/longest-common-prefix/ 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串…

【c语言】字符串常见函数 下

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;c语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&a…

面试:大数据和深度学习之间的关系是什么?

大数据与深度学习之间存在着紧密的相互关系&#xff0c;它们在当今技术发展中相辅相成。 大数据的定义与特点:大数据指的是规模(数据量)、多样性(数据类型)和速度(数据生成及处理速度)都超出了传统数据处理软件和硬件能力范围的数据集。它具有四个主要特点&#xff0c;通常被称…

2024年智能算法优化PID参数,ITAE、ISE、ITSE、IAE四种适应度函数随意切换,附MATLAB代码...

PID 参数整定就是确定比例系数&#xff08;Kp &#xff09;、积分系数&#xff08;Ki&#xff09;和微分系数&#xff08;Kd &#xff09;的过程&#xff0c;以便使 PID 控制器能够在系统中实现稳定、快速、准确的响应。 本期的主题 采用四种2024年的智能优化算法优化PID的三个…

ros自定义msg记录

文章目录 自定义msg1. 定义msg文件2. 修改 package.xml3. 修改 CMakeLists.txt4. message_publisher.py5. message_subscriber.py6. 运行 catkin build 测试 自定义msg ros 版本&#xff1a;kinetic 自定义test包的文件结构如下 |-- test | |-- CMakeLists.txt | |-- msg…

基于Spring Boot的美容院管理系统设计与实现,计算机毕业设计(带源码+论文)

源码获取地址&#xff1a; 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1757434902285987841

算法学习——LeetCode力扣回溯篇2

算法学习——LeetCode力扣回溯篇2 40. 组合总和 II 40. 组合总和 II - 力扣&#xff08;LeetCode&#xff09; 描述 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字…

Spring 中修改 Banner

大家好我是苏麟 , 今天聊一个有意思的东西 . Banner 启动 Spring时&#xff0c;几乎总是能在控制台上方看到如下横幅&#xff0c;这个也叫字符画、英文ASCII艺术字 设置Banner的网站 http://www.network-science.de/ascii/ http://patorjk.com/software/taag/ 在创建resources下…

(免费领源码)Java#mysql牙科诊所预约系统75174-计算机毕业设计项目选题推荐

摘 要 随着互联网时代的到来&#xff0c;同时计算机网络技术高速发展&#xff0c;网络管理运用也变得越来越广泛。因此&#xff0c;建立一个B/S结构的牙科诊所预约系统&#xff0c;会使牙科诊所预约系统的管理工作系统化、规范化&#xff0c;也会提高平台形象&#xff0c;提高管…

Flaurm实现中文搜索

目录 摘要需求本文涉及环境情况如下解决方案最终效果文章其他链接&#xff1a; 摘要 Flarum本身对中文支持并不理想&#xff0c;但随着版本更新&#xff0c;逐渐加强了对中文的优化。然而在1.8.5版本&#xff0c;却还是不支持中文搜索网站文章内容。作者在检索了全网教程&#…

Hive on Spark配置

前提条件 1、安装好Hive&#xff0c;参考&#xff1a;Hive安装部署-CSDN博客 2、下载好Spark安装包&#xff0c;链接&#xff1a;https://pan.baidu.com/s/1plIBKPUAv79WJxBSbdPODw?pwd6666 3、将Spark安装包通过xftp上传到/opt/software 安装部署Spark 1、解压spark-3.3…

【Typora】markdown神器之Typora无限使用安装与基本操作教程

&#x1f33c;一、概述 Typora是一款轻量级的Markdown编辑器&#xff0c;它提供了简洁的界面和直观的操作方式&#xff0c;专注于让用户更加专注于写作。Typora支持实时预览功能&#xff0c;用户在编辑Markdown文档时可以即时看到最终的样式效果&#xff0c;这有助于提高写作效…

基于CU,PO,RD,IPO矩阵图分析数据资产-自创

术语 数据资产&#xff1a;数据资产是具有价值的数据资源。没有价值的数据资源&#xff0c;通过采集&#xff0c;整理&#xff0c;汇总等加工后&#xff0c;也可以成为具有直接或间接价值的数据资产。传统企业逐渐数字化转型&#xff0c;尤其是互联网企业&#xff0c;都十分重视…

pm2启动的node项目访问不了,npm start却可以访问

netstat -ntlp输入该命令&#xff0c;查看启动的服务端口是否有被监听到&#xff0c;如3001&#xff0c;4000之类的&#xff0c;是node项目启动时候自己配的那个&#xff0c; 若没有&#xff0c;则执行 pm2 delete [app-id/app-name] 先删除启动的这个项目 例如pm2 delete my…

猫头虎分享已解决Bug || TypeError: Cannot read property ‘length‘ of undefined ‍

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

黑马Java——集合进阶(不可变集合、Stream流、方法引用)

目录 一、不可变集合 1、创建不可变集合的应用场景 2、创建不可变集合的书写格式 2.1、不可变的List集合 2.2、不可变的Set集合 2.3、不可变的Map集合 3、小结 二、Stream流 1、体验Stream流的作用 2、Stream流的思想 3、Stream流的使用步骤 3.1、单列集合获取Strea…

1232.缀点成线(Java)

题目描述&#xff1a; 给定一个数组 coordinates &#xff0c;其中 coordinates[i] [x, y] &#xff0c; [x, y] 表示横坐标为 x、纵坐标为 y 的点。请你来判断&#xff0c;这些点是否在该坐标系中属于同一条直线上。 输入&#xff1a; coordinates [[1,2],[2,3],[3,4],[4,5]…

[计算机提升] 备份系统:设置备份

6.5 备份系统&#xff1a;设置备份 1、进入到控制面板系统和安全\备份和还原&#xff0c;点击右侧的设置备份&#xff1a; 2、在弹出的设置备份对话框中&#xff0c;选择要保存的位置&#xff0c;点击下一步开始备份。 3、选择要备份的内容。根据需要选择即可。这种备份的…

Linux_动静态库

动态库 静态库 刚开始学编程时&#xff0c;需要下载一个环境&#xff08;vs2019&#xff09;&#xff0c;这个环境包括编译器和标准库&#xff0c;标准头文件。那么什么是库呢&#xff0c;库和头文件有什么关系呢&#xff1f; 头文件里面放的函数声明&#xff0c;库文件里面放…

MacOS - M1芯片 Mac 在“恢复”模式中启用系统扩展教程

部分软件需要开启系统扩展才能正常使用&#xff0c;但是默然M1芯片的Mac不能直接打开系统扩展&#xff0c;如下两图。 若要启用系统扩展&#xff0c;您需要在“恢复”环境中修改安全性设置。 若要执行此操作&#xff0c;请将系统关机&#xff0c;然后按住触控ID或电源按钮以开…