编程语言中的二进制和位运算符

Codesys可视化教程——按钮和指示灯 codesys可视化、codesys学习、可视化编程 阅读详情

前段时间自己闲着就学了php,虽说php比较简单,但是在学习的时候还是遇到了许多问题,一些类似底层的知识貌似都不会,例如二进制的一些东西,因此自己又重新好好的学了一遍,这次要分享的是有关二进制的东西和逻辑运算符。一起来学习吧,二进制的知识总结起来一共是7点。

1.二进制的最高位是符号位0表示正数1表示负数

来举个例子,整数3数据的长度为32位,那么用二进制表示就是

0000 0000 0000 0011

如果是-3则表示为

1000 0000 0000 0011

这里其实并不复杂,复杂的是正数和负数的原码、补码、反码,接下来就一点一点的来介绍

2.正数的原码、补码、反码都一样

例如3的原码、补码、反码都是000 0000 0000 0011,一般来说我们先得到数字的原码在得到其他的,这一点也简单,复杂一点的是负数

3.负数的反码等于他的原码符号位不变,其他位取反取反就是0变为1,变为1

以-3为例,它的原码是1000 0000 0000 0011,  -3的反码则是1111 1111 1111 1100

4.负数的补码等于它的反码加1

从第三点我们得到了-3的反码为1111 1111 1111 1100,补码就是1111 1111 1111 1101

5.0的反码补码都是0

6.计算机进行运算的时候,都是以补码的方式进行运算的


有上面5点基础我们就可以不通过程序来做几个题了

(1)取反  ~

就是1变成0,0变成1   那怎么计算 ~3的结果呢?

首先还是要取得3的原码  0000 0000 0000 0011,因为3是正数所以它的补码也是0000 0000 0000 0011,取反后结果则为1111 1111 1111 1100.到了这一步其实我们还没得到最终的结果,此时的1111 1111 1111 1100现在是负数,这样子就要综合第3、4、5、6四条规则来计算了。简单来说其实现在1111 1111 1111 1100是一个补码,负数的补码等于反码加1,那么反码就是补码减去1   ,那怎么算呢在二进制里1+1=10,反过来10-1=1,自然的1111 1111 1111 1100减去1就等于 1111 1111 1111 1011,此时反码出来了,接下来求出原码,负数原码和反码可以通过取反互相转换,那么1111 1111 1111 1011取反就是1000 0000 0000 0100,这个二进制表示的数就是-4

那如果是~(-3)等于多少呢,这个比正数的那种简单了很多,从前面我们知道-3的补码是1111 1111 1111 1101,取反之后结果变为0000 0000 0000 0010,我们的到了一个正数,正数的原码、反码、补码相同,换算成十进制就是2

(2)左移位,将运算数的二进制整体左移制定位数,移动之后的空位用0来补充

例如我们要求-2<<2,原理还是一样先求出-2的补码1111 1111 1111 1110,左移2位之后变为1111 1111 1111 1000,之后求出反码1111 1111 1111 0111,后面再求一次反码得到

1000 0000 0000 1000,最终结果为-8

(3)右移操作,将二进制码整体右移,右移之后的空位用符号位填充

右移的操作和左移类似,这里不再举例了

(4)无符号右移 >>>,这种操作符将会用0来填充空位

 (5)按位与&,按位或|,异或^

   前面2种大家应该都知道,最后一种比较特殊也就是相同为0不同为1 ,例如3&6=2,3|6=7,3^6=5


一般来说记住二进制的那几个规则,后面的这些就没什么问题了。


【c语言第八剑】(&)按位与(|)按位或以及(^)按位异或 参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0;0&1=0;1&0=0;1&1=1;即:两位同时为“1”,结果才为“1”,否则为0;看到这段话是不是很晦涩难懂,没关系,我们用画图的方法来了解它,学习编程语言最好的方法永远是画图按位或处理两个长度相同的二进制数,两个相应的二进位中只要有一个为1,该位的结果值为1。例如0101 (十进制 5) OR 0011 (十进制 3) = 0111 (十进制 7)在C类程序设计语言中,按位或操作符是"|"。 阅读详情

相关推荐

思博伦Spirent TestCenter创建单播流uni-stream

Traffic Generator列表中会出现刚才创建的uni-stream,创建完成。通常测试情况下,主要对Ethenet II和IPv4 Header进行配置。(通常情况下,如果流配置比较规范,选择任意端口接收,也没问题。编辑uni-stream基本信息。配置本条流由STC哪个端口接收。

辗转反测的博客 1680

CODESYS逻辑运算指令

4XOR 异或 两个结果相同结果为FALSE,两个结果不相同结果为。2,OR 或指令 条件中有一个指令为真,就输出。1AND 与指令 两个条件都为1才输出。

xi_ri的博客 1356

历史预测+LLM双杀!DriveGPT4-V2闭环驾驶配置避坑指南

本文深入探讨了DriveGPT4-V2在工程化部署中的核心挑战与解决方案。通过融合历史轨迹预测与大语言模型,该模型旨在实现更可靠的端到端自动驾驶。文章详细解析了从环境配置、多模态Token对齐、轻量控制头设计到训练优化与闭环仿真验证的全流程,为开发者提供了一份详实的避坑指南。

transformer2023的博客 382

CODESYS笔记2

全局变量通常在整个程序范围内定义,会放在“Application”树下面。其添加方法是在“Application”上点右键,在“添加对象”中选择“全局变量列表…在弹出的窗口中输入全局变量的定义域名称,默认是“GVL”。局部变量通常在程序、函数或功能块内部定义。局部变量的定义必须是在字段“VAR…END_VAR”之内。比如上一期工程里面main函数的变量定义都属于局部变量。变量名 : ARRAY[0..N,0..M] OF 变量类型;变量名 : ARRAY[0..N] OF 变量类型;

god_monkey的博客 2761

关于Selenium3在MicrosoftEdge浏览器中出现的问题

前言 最近在做web自动化测试,所用环境是java+selenium3.141.59+MicrosoftEdge(Chromium)浏览器。 在调试的过程中,出现了很多问题。比如selenium3在Edge浏览器中远程调用中,不支持addArguments方法等 问题 1.Edge浏览器弹窗问题 在测试过程中,会出现弹出窗提示 ...

zhucheng1994的博客 2191

STM32F103xx / STM32F429VET6最小系统原理图

心血来潮想试一下STM32F4系列和F1系列在编程上有什么差别,手头没有开发板,本着能勤俭节约的原则自己先做一块看看能不能成,看了一下STM32F429VET6的芯片在F429xx中最便宜,对照着数据手册绘制了原理图画了PCB,目前打板中,焊接完如果跑不通回来修改文章。这里我们可以看到,VDD是标准工作电压,VDDA是模拟工作电压,且VDDA必须与VDD等电位,VBAT是备份工作电压,一般接纽扣电池电源,如果存在VREF+引脚,则要求VDDA-VREF+ < 1.2V。截图下来比较糊,不知道为什么。

m0_51294753的博客 1万+

编程基础

(1)注释–关键字–标识符–变量与常量–八大数据类型– 1.注释 ctrl+shift+/=多行注释 ctrl+shift+c=单行注释 2.关键字 关键字都有哪些 定义访问权限修饰符的关键字 (1)、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用 (2)、private:private表示私有,私有的意思就是除了class自己之外,任何人都不...

weixin_43905026的博客 702

国产FPGA高云GW1NSR-4C,集成ARM Cortex-M3硬核

从板子整体角度来看,这是一款国产化程度很高的板子,从主控FPGA,到JTAG芯片,存储芯片、电源芯片等,都是使用的国产半导体公司的产品。板子整体尺寸也比较迷你,属于小而美类型的,可以认为是一款FPGA核心板,当然也预留了排针接口,给用户足够的扩展空间。对于想了解高云小蜜蜂SoC软硬件开发,以及对云源软件、MCU开发环境做个深度评测来说足够了。JTAG调试器固件可以增加虚拟串口功能,对于板子本来来说面积不会有改动,只需要添加两根信号线即可。

whik1194的博客 6393

二进制符号数的原码、反码、补码

本文内容是本人在学习数字电子技术课程时,于数字电子技术(第十版,Thomas L. Floyd 著)中总结出的笔记,与大家分享。本人是大二菜狗,文章难免有错误纰漏之处,欢迎大家批评指正。

weixin_43433801的博客 7071

手把手教你学Simulink--FIR滤波器的设计与优化仿真

FIR滤波器的设计目标通常包括指定的频率响应特性(如低通、高通、带通或带阻),以及特定的应用需求(如线性相位、最小化误差等)。Simulink提供了一个直观且强大的平台来模拟这些设计,并允许用户通过调整参数实时观察其对系统性能的影响。明确你的系统需求,比如输入信号类型(如正弦波组合)、采样率、FIR滤波器的设计参数(如滤波器类型、阶数、截止频率等)。假设我们需要设计一个低通FIR滤波器,用来去除高于1kHz的所有频率成分,保留低于1kHz的信号成分。采样率为8kHz。

MHD0815的博客 345

SAP Integration Suite 与 SAP Cloud Integration 的关系解析

SAP Cloud Integration是SAP Integration Suite套件的核心组件,专注于消息与流程集成。两者关系可概括为:Integration Suite是SAP BTP上的集成平台套件(iPaaS),而Cloud Integration是其中负责应用与B2B集成的关键能力。日常所说的"CPI"实际指代的是Integration Suite中的Cloud Integration功能。该套件还包含API管理、事件网格等其他集成能力,共同构成企业集成解决方案。理解这一层

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 592

Julia语言中的位运算符、赋值运算符、算术运算符

Julia语言中的位运算符、赋值运算符、算术运算符,讲述这些运算符的操作方法

m0_73500130的博客 1020

海思Hi3519A开发:DSP开发指南

通过创建DSP项目、实现算法、编译调试等步骤,开发者可以充分利用Hi3519A芯片集成的DSP,实现各种音视频处理功能。通过以上示例,我们可以看到在Hi3519A开发平台上进行DSP开发是一项强大而灵活的任务。在调试过程中,可以使用调试工具提供的功能,如断点设置、变量查看等,以便更好地理解和优化DSP算法的执行过程。在Hi3519A开发平台上,我们可以利用DSP的高性能计算能力来加速这些算法的执行。在实际的DSP开发中,算法的实现可能更加复杂,需要结合具体的项目需求进行。3.2 DSP算法实现。

QoTypescript的博客 1494

LeeCode-整数对应二进制中1的个数

1除了个位是1,其他位都是0,进行&操作时,就可用来判断n的个位是不是1。判断完个位,无符号右移即可继续判断。输入一个整数,返回其二进制中1的个数。

椰汁菠萝 243

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

一篇搞定位运算(&、|、^、~、>>、<<、>>>)

在计算机中 , 所有的数据都是以二进制的(0,1)形式存储在设备中 , 而位运算就是运算这些二进制数据我们最了解的就是十进制 , 除了十进制 , 还有二进制 , 六进制 , 八进制等等 , 由于位运算操作就是二进制 , 所以我们主要来说一下二进制 , 十进制的个位有(0~9)这几个数字 , 而二进制也相同 , 二进制的个位上只有0和1我们在运用java语言进行编码时 , 遇到最小的单位就是字节 , 而一个字节就是8位 , 每一位都是0或者1, 如下图所示。

刘跃辉的博客 5866

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

计算机基础(一)

提示:本篇文章摘录自《码出高校》,有兴趣的朋友可以去了解 第一章 计算机基础—计算机组成原理 前言 例如:随着科技的不断发展,计算机这门技术也越来越重要,很多人都开启了软件开发这门课程的学习,但是先在很多人都只注重高级东西开发,却对计算机最基本的东西不了解。本片文章@别叫小宋就带大家了解一下计算机的基础。 提示:以下是本篇文章正文内容 一、什么是计算机?(走进0与1的世界) 计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记.

m0_56769177的博客 365

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

运算符的分类及运算规则

1、运算符的不同分类: 1)算数运算符 2)赋值运算符 3)比较运算符|关系运算符 4)逻辑运算符 5)条件运算符 6)位运算符 2、算术运算符 + 1)正号 2)加法运算 3)字符串的连接符 当+左右两边一旦出现字符串,+作为字符串的连接符使用,最后会把左右两边的数据拼接成一整个字符串得到结果 - :1)减号2)减法运算 * ...

Hulxx的博客 4368

Day10,基本运算符,三元运算符小结

算数运算符 加 减 乘 除 取于 加加 减减 赋值运算符 等于 关系运算符 大于 小于 大于等于 小于等于 等于等于 不等于 逻辑运算符 与 或 非 位运算符 与 或 疑惑运算 非a及b 左移乘*2 右移除/2 拓展赋值运算符 加等于 减等于 位运算符 与 或 疑惑运算 非a及b 位运算符 与 或 疑惑运算 非a及b 左移乘*2 右移除/2 拓展赋值运算符 加等于 减等于 ...

qq_50034199的博客 197

相关运算符

相关运算符 1、算术运算符 包含:+、-、*、/、%(取余)、++、– 注意:float、double不能取余 2、逻辑运算符 逻辑与(&&):全1为1,逢0截止。(真真为真) 逻辑或(||):一个为真就是真,逢1截止。(全0为0) 逻辑非(!):也叫逻辑反,运算律为:1为0,0为1。 3、位运算符 位逻辑反:~ 位逻辑与:& ,全1为1,遇0结果则为0 位逻辑或:|,全0为0,遇1结果则为1 位逻辑异或:^ 相同为0,不同为1 右移:>> 左移:<&lt

karry_hahaha的博客 220

python学习记录 - Python运算符

加- 减* 乘/ 除需要注意一点的时,/ 会固定返回一个浮点数// 整除% 取余m % n 有 n 种结果,为(0,n-1)常用m % 2来进行判断等操作** 指数m**n 即为m的n次方。

specter8616的博客 105

位运算简单理解

无论在哪门语言都老是遇到位运算。之前我懒,加上考试对这块也考的不多,就随便应付过去了,但现在发现Java、Python、sql都可以用位运算来提高一点运算效率,这里简单记下。 首先给出位运算的符号: 符号 作用(简要) 作用(具体) & 按位与 把两个操作数转化为二进制数,然后每位进行位运算,1&1=1, 1&0=0, 0&0=0,可以理解为,都为真才为真 | 按位或 把两个操作数都转化为二进制数,然后每位进行位运算,1|1=1, 1|0=1, 0|0=0

weixin_48127037的博客 640

JAVA同学入魔了

运算符

2201_75496726的博客 128

Java运算符

算术运算符 +,-,*,/,%,++,-- +也可以连接字符串 ++在前 先自增 后运算 ++在后 先运算 后自增 --在前 先运算 后自减 --在后 先自减 后运算 比较运算符 不等关系 >,<,>=,<=,!=, == 都能进行数值间的比较 !=, ==还能进行逻辑值的比较 !=, ==还能进行引用类型的比较 逻辑运算符 & 逻辑与 所有表达式都为true 结果为true &&短路与 所有表达式都为true 结果为true 出现

mood0916的博客 121

python入门

算数运算>位运算>比较运算>布尔运算。

TYtytytyty147的博客 102

Java基础知识----运算符

一、常见的运算符 + :1.连接两个基本数据类型则做加法运算。2.连接字符串 - :减法运算 * :乘法运算 / :除法运算 % :取余运算 ++ :将自身的值自增一次,就是加1 -- :将自身的值自减一次,就是减1 二、复核运算符 += :i = i + 值 的简写 -= :i = i - 值 的简写 *= :i = i * 值 的简写 三、赋值符号 = :将右边的值赋值给左边 四、比较运算符 == :比较两边的值是否相等 >:左边的值是否大...

qq1315758327的博客 196

Python运算符--理论加实践

* 大于 * / // % 大于 + - 大于 >> >= < 位运算符 > 比较运算符 > 布尔运算 > 赋值运算符。and:并且,两边都为真结果才是真。按位取反 涉及曾反补。|按位或:相同位置只要有一个1,结果就是1。&按位与:形同位置都是1,结果才是1。

weixin_64116813的博客 88
上一篇: java版选择排序和插入排序
下一篇: java和php面向对象的一些比较
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值