回顾:
 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操作符及二进制补码计算的更多相关文章

  1. 利用ZYNQ SOC快速打开算法验证通路(1)——MATLAB浮点数与定点二进制补码互转

    最近本人一直在学习ZYNQ SOC的使用,目的是应对科研需要,做出通用的算法验证平台.大概思想是:ZYNQ PS端负责与MATLAB等上位机数据分析与可视化软件交互:既可传输数据,也能通过上位机配置更 ...

  2. 二进制补码除法——计算机底层整数除法模拟之Java实现

    前面讲到布思算法的计算机底层模拟的时候,我们是借助于一个可以储存.表示任意N位的二进制补码的BinaryQueue实现的,现在我们模拟计算机底层整数除法还是要借助于它: BinaryQueue类代码: ...

  3. 二进制补码:Why & How

    二进制补码:Why & How 学习计算机原理或者语言的底层操作难免会遇到用二进制补码表示负数的问题.由于一些书本上对于采用补码的原因没有详细解释,很多人会认为这只是一种规定,但实际上采用补码 ...

  4. java基础 二进制补码

    二进制补码: 1.计算机系统的内部以二进制形式存储数据. 2.在Java程序中输入的十进制的数据都会被自动转换为二进制,Java内部也以二进制来进行数值运算,但返回的结果是十进制. 二进制补码的原理: ...

  5. Day04_数据类型占位符使用及进制转换

    2013年10月09日 星期三 10时03分51秒 回顾:  1.变量  2.scanf标准函数 字符类型是一种数据类型 在C语言程序中字符类型用char表示 字符类型中包含了256个不同的字符,例如 ...

  6. 原码、反码、补码及位操作符,C语言位操作

    计算机中的所有数据均是以二进制形式存储和处理的.所谓位操作就是直接把计算机中的二进制数进行操作,无须进行数据形式的转换,故处理速度较快. 1.原码.反码和补码 位(bit) 是计算机中处理数据的最小单 ...

  7. 二进制原码、反码、补码以及Java中的<< 和 >> 和 >>> 详细分析

    1.计算机二进制系统中最小单位bit 在计算机二进制系统中: bit (位) :数据存储的最小单元. 简记为b,也称为比特(bit),每个二进制数字0或1就是一个位(bit),其中,每 8bit = ...

  8. java二进制表示形式与移位操作符

    java二进制表示形式 java中数字的二进制表示形式称为"有符号的二进制补码",下面先介绍原码,反码,补码. 编码 计算方法 原码 用最高位表示符号位,'1'表示负号,'0'表示 ...

  9. 任意N位二进制的补码实现——队列存放

    正在学习计算机组织与结构,为了写一些底层的算术操作模拟,比如一个二进制补码数的加减乘除,发现这很麻烦,因为不管是什么语言,都只提供了8位.32.64位等部分位数的补码形式,那么怎么实现任意任意位的补码 ...

随机推荐

  1. 【UE4】如何获取/下载虚幻4(Unreal Engine4)源码

    在官网中点击[获取虚幻引擎]可以看到,虚幻4完整源代码已经放在Github上,所以与其用百度搜别人的资源,当然是直接上Github下啊. 主要步骤如下: 注册一个Github帐号,这个没啥值得说的. ...

  2. java继承2——类与继承(转)

    一.你了解类吗? 在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在pu ...

  3. R语言两种方式求指定日期所在月的天数

                 R语言两种方式求指定日期所在月的天数 days_monthday<-function(date){ m<-format(date,format="%m& ...

  4. Mac升级yosemite后无法登陆问题

    Mac升级yosemite后无法登陆问题         今天心血来潮准备玩玩最新的苹果系统10.10,代号是yosemite.去官网申请了beta版的測试资格,然后在app store下载了一晚上得 ...

  5. Eclipse 中link一个异地的Folder

    Eclipse 中link一个外地的Folder New -> Folder -> Click "Advanced" --> Check "Link t ...

  6. jQueryEasyUi行编辑打造增删改查

    var $obj;$(function() { $obj = $("#configQueryGrid"); $obj.datagrid({ loadMsg : '数据加载中请稍后… ...

  7. Anaconda之常用命令

    1.查看环境列表:conda-env  list 2.删除环境:conda env remove -n tf1.2 3.创建指定python的环境:conda create -n tf1.2 pyth ...

  8. 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表

    python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...

  9. keepalived双BACKUP加nopreempt失效、手动监控服务脚步。

    keepalived双BACKUP加nopreempt不起作用,两个机器同时拥有vip, 排查几天发现是防火墙问题,啃爹. 打开  vi /etc/sysconfig/iptables 插入一条:-A ...

  10. SVN中Revert changes from this revision 跟Revert to this revision

    譬如有个文件,有十个版本,假定版本号是1,2,3,4,5,6,7,8,9,10. Revert to this revision: 如果是在版本6这里点击“Revert to this revisio ...