回顾:
 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. 【Unity】动态调用其他脚本的函数

    本文转载自:http://blog.csdn.net/smilingeyes/article/details/17767269 第一种,被调用脚本函数为static类型,调用时直接用 脚本名.函数名( ...

  2. Jackson2.1.4 序列化对象时,过滤null的属性 empty的属性 default的属性

    在进行序列化如何过滤为null的属性,empty的属性,或者default的属性. 一.全局注册 objectMapper.setSerializationInclusion(Include.ALWA ...

  3. jackson2.1.4 序列化 通过给定Class映射 与抽象类的映射

    //如果已知想要序列化的类型 可以使用TypeReference来进行处理 //List<MyBean> result = mapper.readValue(src, new TypeRe ...

  4. [转]RosBridge小结

    1.rosbridge介绍 rosbridge(rosbridge_suite)是ros官方为开发者提供的一个用于非ros系统和ros系统进行交互通信的功能包.rosbridge主要包含两个部分,Ro ...

  5. smo算法matlab实现

    看完CSDN上结构之法,算法之道的支持向量机通俗导论(理解SVM的三层境界) http://blog.csdn.net/v_july_v/article/details/7624837     参考了 ...

  6. 15 +免费及收费的jQuery滚动插件

    免费的 jQuery Scrolling 插件 Tiny Scrollbar SUPERSCROLLORAMA jScrollPane Curtain.js Plugin JQuery : Scrol ...

  7. [svn] 在线安装

    SVN地址:http://subclipse.tigris.org/update_1.6.x/

  8. 何为中间语言IL?

    一直以来,对于.NET与C#之间的关系我都存在着疑惑,为此,今天专门仔细看了一下以前最容易忽略掉的书本“前言”部分,予以澄清:) 首先,c#的结构和方法论反映了.NET的基础方法论,在很多情况下,c# ...

  9. 重复数据删除 开源实现 (deduputil) (转)

    [dedup util] dedup util是一款开源的轻量级文件打包工具,它基于块级的重复数据删除技术,可以有效缩减数据容量,节省用户存储空间.目前已经在Sourceforge上创建项目,并且源码 ...

  10. asp.net 后端验证

    using EntryRegistration.Filters; using EntryRegistration.Models.Entity; using System; using System.C ...