Day05_C操作符及二进制补码计算
回顾:
1.数据类型
2.二进制(八进制,十六进制)
---------------------------------------------------------
计算机中不可以使用负号表示负数
计算负数二进制的过程:
1.计算出相反数的二进制
2.把上一步的结果按位求反再加一
使用上述方法计算出的结果就是二进制补码,可以直接存储在计算机中
所有数据类型中,左边一个 1 右边全 0 的二进制表示这个类型中的最小数
-55 --> 55 --> 32 + 16 + 4 + 2 + 1 --> 0011 0111 -->1100 1000 + 1 --> 1100 1001
-96 --> 96 --> 64 + 32 --> 0110 0000 --> 1001 1111 + 1 -->1010 0000
使用上述方法可以根据任意二进制补码计算相反数的补码
所有负数的二进制补码最左边数位一定是1
有符号数据最左边一个数位是1则表示负数
有符号数据最左边数位叫做符号位
符号位不等同于符号,仅仅是能表示符号
整数类型之间赋值的过程中会保持二进制不变
在整数类型赋值过程中如果需要扩展则扩展有符号数据的符号位
-----------------------操作符--------------------------
, 是一个操作符,可以用来连接两个简单表达式
用 , 编写的表达式的计算结果是最后一个简单表达式的计算结果
, 操作符的优先级非常低
赋值操作符(=)可以用来改变变量的内容
赋值操作符左边必须是一个值,可以简单的理解为变量
赋值操作符右边必须是一个可以当作数字使用的东西;
赋值操作符的优先级非常低
一条语句中可以包含多个操作符,计算顺序是先计算右边的后计算左边的;
C语言中按照操作符所需要的数字个数对操作符进行了分组
单目操作符只需要一个数字
双目操作符需要两个数字
三目操作符需要三个数字
绝大多数双目操作符可以和赋值操作符合并形成复合赋值操作符 (例如,+= ,-=,*=,%=等)
复合赋值操作符可以把计算结果记录在某个参与计算的变量中
复合赋值操作符也都是双目操作符
复合赋值操作符前面的必须是一个变量,后面是一个可以当数字使用的东西
复合赋值操作符的优先级和赋值操作符优先级一样
自增操作符(++)和自减操作符(--)可以对一个变量进行加一或减一操作
自增和自减操作符都是单目操作符,与它们配合使用的必须是一个变量
自增和自减都存在前操作和后操作两种方式
前操作的优先级非常高,后操作的优先级非常低
不要在同一条语句中对同一个变量多次进行自增或自减计算
布尔类型包含两个数据,一个是真(true)另一个是假(false)
在计算机中真用1表示,假用0表示
为了在程序中使用布尔类型,需要包含stdbool.h文件
任何整数数据都可以当成布尔类型数据使用。
数字0当作布尔值使用时是假,其它整数当布尔值使用时是真
逻辑表达式的计算结果只能是真或者假
逻辑操作符用来编写逻辑表达式
双目逻辑操作符包括 ==,!=,>,<,>=,<=
!是一个单目逻辑操作符,它表示对一个现有的布尔值进行求反操作
逻辑操作符的优先级比算术操作符的优先级低
与(&&)和 或(||)也是两个双目逻辑操作符,它们可以用来连接两个简单逻辑表达式
如果多个简单逻辑表达式的计算结果都是真,则用 与 把它们连接起来以后得到的复杂逻辑表达式的计算结果也为真
如果多个简单逻辑表达式的计算结果中有一个是真则用 或 把它们连接起来以后得到的复杂逻辑表达式的结果就是真
与(&&)和 或(||)都具有短路特征:
如果复杂逻辑表达式中前面的部分已经决定了整个结果则后面的部分根本不会计算。
位操作符直接对二进制数据位进行操作
双目位操作符包括按位与(&)按位或(|)以及按位异或(^)
按位与(&)把对应数位上的数字进行与计算
0 & 0 0
1 & 1 1
0 & 1 0
3 0000 0011
5 0000 0101
0000 0001 (同1出1)
按位或(|)把对应数位上的数字进行或计算
0 | 0 0
1 | 1 1
0 | 1 1
3 0000 0011
5 0000 0101
0000 0111 (有1出1)
按位或可以把一个字节中任何一个数位设置成1
任何数字和0按位或结果不变
任何数字和1按位或结果是1
按位异或(^)把对应数位上的数字进行异或操作
0 ^ 0 0
1 ^ 1 0
0 ^ 1 1
3 0000 0011
5 0000 0101
0000 0110 (相同出0)
按位异或可以把一个字节中的某些数位求反
任何数字和0按位异或结果不变
任何数字和1按位异或则求反
预习:
1.其它位操作符
2.三目操作符
3.类型转换
4.分支(if,switch..case)
5.循环(for)
作业:
1.编写逻辑表达式判断某个年份是不是闰年
(可以被4整除但是不能被100整除 或 可以被400整除)
2.使用一个char类型变量的最右边三个二进制数位控制红绿灯,顺序是红黄绿。如果对应数位上是1则灯亮,否则等灭。
1)编写语句在不知道变量内容的情况下点亮红灯,熄灭另外两盏灯(0000 0100)
2)如果已知绿灯亮,其它灯灭。编写语句熄灭绿灯点亮黄灯
Day05_C操作符及二进制补码计算的更多相关文章
- 利用ZYNQ SOC快速打开算法验证通路(1)——MATLAB浮点数与定点二进制补码互转
最近本人一直在学习ZYNQ SOC的使用,目的是应对科研需要,做出通用的算法验证平台.大概思想是:ZYNQ PS端负责与MATLAB等上位机数据分析与可视化软件交互:既可传输数据,也能通过上位机配置更 ...
- 二进制补码除法——计算机底层整数除法模拟之Java实现
前面讲到布思算法的计算机底层模拟的时候,我们是借助于一个可以储存.表示任意N位的二进制补码的BinaryQueue实现的,现在我们模拟计算机底层整数除法还是要借助于它: BinaryQueue类代码: ...
- 二进制补码:Why & How
二进制补码:Why & How 学习计算机原理或者语言的底层操作难免会遇到用二进制补码表示负数的问题.由于一些书本上对于采用补码的原因没有详细解释,很多人会认为这只是一种规定,但实际上采用补码 ...
- java基础 二进制补码
二进制补码: 1.计算机系统的内部以二进制形式存储数据. 2.在Java程序中输入的十进制的数据都会被自动转换为二进制,Java内部也以二进制来进行数值运算,但返回的结果是十进制. 二进制补码的原理: ...
- Day04_数据类型占位符使用及进制转换
2013年10月09日 星期三 10时03分51秒 回顾: 1.变量 2.scanf标准函数 字符类型是一种数据类型 在C语言程序中字符类型用char表示 字符类型中包含了256个不同的字符,例如 ...
- 原码、反码、补码及位操作符,C语言位操作
计算机中的所有数据均是以二进制形式存储和处理的.所谓位操作就是直接把计算机中的二进制数进行操作,无须进行数据形式的转换,故处理速度较快. 1.原码.反码和补码 位(bit) 是计算机中处理数据的最小单 ...
- 二进制原码、反码、补码以及Java中的<< 和 >> 和 >>> 详细分析
1.计算机二进制系统中最小单位bit 在计算机二进制系统中: bit (位) :数据存储的最小单元. 简记为b,也称为比特(bit),每个二进制数字0或1就是一个位(bit),其中,每 8bit = ...
- java二进制表示形式与移位操作符
java二进制表示形式 java中数字的二进制表示形式称为"有符号的二进制补码",下面先介绍原码,反码,补码. 编码 计算方法 原码 用最高位表示符号位,'1'表示负号,'0'表示 ...
- 任意N位二进制的补码实现——队列存放
正在学习计算机组织与结构,为了写一些底层的算术操作模拟,比如一个二进制补码数的加减乘除,发现这很麻烦,因为不管是什么语言,都只提供了8位.32.64位等部分位数的补码形式,那么怎么实现任意任意位的补码 ...
随机推荐
- 【C#】图像的变形/变换/扭曲。用Emgu或YLScsFreeTransform(FreeImageTransformation)或MagickImage
需求:将图像变形,如矩形图片变换成梯形的,图素拉伸. 解决方案:目前找到有两种. 使用EmguCV,它是.Net版的OpenCV.推荐直接在VS里的Nuget中搜索EmguCV进行下载. 使用第三方库 ...
- LAN8710A/LAN8710Ai datasheet 记录
因为产品的双网口出现了问题,而且是AM335x 内部驱动,难度比较大,现从PHY 端开始分析相关原理,找到双网口不能使用的原因. 此篇是记录一些有关LAN8710A 这个PHY的一些特性. 各个功能模 ...
- ExtJS获取Grid的行数
1. grid.getSelectionModel().getCount() ; // 获得当前选中的行数 2. grid.getStore().getTotalCount(); ...
- 分别通过【buildpath】和【lib】倒入JAR包有什么不同
我们可以通过java虚拟机的类加载器来理解.通过buildpath设置(或添加)程序使用jar包的classpath.Java虚拟机是根据Java ClassLoader(类加载器)决定如何,到那里去 ...
- thinkphp 无限级分类的思想 分析
$list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')- ...
- 关于Unity中UI中的Mask组件、Text组件和布局
一.Mask组件 遮罩,Rect Mask矩形Mask(Rect Mask2D组件),图片Mask(Mask组件)(图片Mask的透明度不为0的部分显示子图片,为0的部分不显示子图片) Rect Ma ...
- window,centos双系统坏了
在centos中格式化SD卡的时候,操作错误,误将windows系统C盘的给格式化了.C盘是ntf格式的,现在却变为了fat32的格式. 重启系统,发现还是可以进入到centos,但是window进入 ...
- ImageNet Classification with Deep Convolutional Neural Networks 论文解读
这个论文应该算是把深度学习应用到图片识别(ILSVRC,ImageNet large-scale Visual Recognition Challenge)上的具有重大意义的一篇文章.因为在之前,人们 ...
- Zookeeper 工作流
一旦ZooKeeper集合启动,它将等待客户端连接.客户端将连接到ZooKeeper集合中的一个节点.它可以是leader或follower节点.一旦客户端被连接,节点将向特定客户端分配会话ID并向该 ...
- V4L2编程 视频采集-范例
http://linuxtv.org/downloads/legacy/video4linux/API/V4L2_API/v4l2spec/: http://blog.csdn.net/kangear ...