二进制学习时的笔记(其实也没什么用,留着给自己看的)

二进制简介
只有 0 1
优点:
1.二进制状态简单
2、可靠性、稳定性高
3、运算规则简单,简化设计
4、通用性强

二进制计算
正数二进制
十进制转二进制(除二直到0为止)
规则: 除二倒取余
或者 把一个数字拆成2的n次方相加
55=32+16+4+2+1
2^5+2^4+2^2+2^1+2^0
110111
负数二进制
-77 -1001101
用一位二进制位当作符号为 存符号
int 32位 char 8位
char -77 ——> 最高位当做符号位 1为负号 0位正号
1100 1101 (原码 原码在计算式会出错)
对原码取反
1011 0010 (除了符号位之外 全部取反 反码)
1011 0010+1=1011 0011 (反码加1)

存放的是补码 补码相加不会出错

8位二进制
16+(-13)
16 0001 0000
-13的二进制 1.原码 1000 1101
2.反码 1111 0010
3.补码 1111 0011
原码相加
0001 0000 +
1000 1101 =
1001 1101 (结果是错的)

补码相加
0001 0000 +
1111 0011 =
1 0001 0011 (只有8位,去掉最高位 结果正确)

规定正数的原码、反码和补码是一样的

小数的二进制 和浮点型数据的存放

小数的二进制 2^-6

存浮点型 精度 float 32位 才精确6-7位
32位
最高位 符号位 1位 存放符号 1为负数0为正数
8位指尾数位 1+172——>存到指数位 偏移量(127)
23位 尾数位

1.1001001 左移一位
1.1001001*2^1 //二进制的指数形式

10进制
110=1.10*10^2

-3.1415
1 1000 0000 1001 001 0000 0000 0000 0000

——>127 8位指数位 ——>-127~128 +2^7-1

*/

浮点型二进制

1.首先计算小数的二进制 2.将小数二进制转换成指数形式 3.将小数的符号位存在float的第一位,0为正数, 1为负数.指数部分加上偏移量,存入8位指数位 将指数形式的二进制的小数部分存入尾数位, 如果位数不够 ,在后面用0补齐 P.S 将小数换算成指数形式的时候,规则是将小 移动到第一个1的右边,左移几位就是乘以2的 几次幂

二次学习 补充笔记

数据--->二进制
除法 效率 计算机的除法用减法实现的
二进制的用途---> PS 美图 二进制操作

重点 计算二进制 (10进制数字转换二进制)
1.日常用的都是10进制 10进制-->二进制存放
3(D) 11(B)
进制不同但是可以表示一个东西
2.会算 (计算方式)
3.整数(必须 正数和负数) 浮点型(了解)
4.进制转换 2进制 8进制/16进制 10进制
2进制(计算机存放的方式)(代码中不用)
8进制/16进制 代替2进制(可以和2进制直接转换)
10进制 (平时用的进制)

1.整数的二进制
1.1 正数
int char(-128~127 0~127每个整数对应一个字符 ASCII)

170 123
除2求余
170的二进制 10101010
123的二进制 1111011
int 32位 补齐
0000 0000 0000 0000 0000 0000 0111 1011
char 8位二进制
0111 1011

unsigned 无符号
signed 有符号

(signed)int
unsigned (int) unsigned默认表示unsigned int
unsigned char
(signed)char 默认有符号
1.2 负数
有符号 能够存放负数
负数 3-2 --->3+(-2)
最高位 当作符号位 存放符号 0表示正数 1表示负数
char作为例子
3 0000 0011
-3 1000 0011(最高位当作符号位) --->用这个当作二进制的话 关于负数计算会出错
原码
反码 1111 1100 (原码 除符号位外 其余全部1变0 0变1)
补码 1111 1101 (反码加1)
整数负数二进制 存放的是补码

补码的原因 保证涉及到负数的二进制计算正确
取反加1码

特殊情况
1.char中-128的二进制
反码 1111 1111 原码 -->1000 0000 -128
补码 1000 0000

2.unsigned 存放负数问题

---->计算机用二进制处理数据 (不会报错 不代表没有错误)
按照语法来 (错误的代码再去考虑没有意义)

有符号和无符号 位数是一样的
二进制不分正负

格式占位符----->打印的方式
存放二进制不分正负的 解析方式不一样 处理的结果不一样

%u 无符号10进制整数
%d 有符号10进制整数
%x 无符号16进制整数
%o 无符号8进制整数

unsigned int x=-3;
unsigned int x=0xfffffffd;//代码中16进制表示的话前面加0x 8进制前面加0
//表示 把数据当作无符号整型处理
//计算机是否检查二进制

可以试试 用%d 打印float类型(可以打印 不会报错 但是结果不对)

-3 原码
1000 0000 0000 0000 0000 0000 0000 0011
1111 1111 1111 1111 1111 1111 1111 1100
1111 1111 1111 1111 1111 1111 1111 1101

1Byte =8bit

除法比较慢 整数除以2 >>1 右移一位 除以2

数据 超过范围--->溢出
char ch=-128; 1000 0000
ch--; 0111 1111--->127

2.浮点型二进制的存储(了解)
float double(1+11+52)

float存放数据的范围 -1.7*10^38~1.7*10^38
float 4个字节 32位 (有符号)1+8+23
1位 符号位
8位 指数位
23位 尾数位

-7.88
方法
1.先转2进制小数
符号保留
整数部分按照整数二进制求法
小数部分 乘2取整 从上往下放到小数点的右边

-111.11100001

小数点移动到第一个1的右边
-1.1111100001*2^2 指数形式 左移N位 *2^N

指数存 2 8位 计算方式比较特殊 指数+偏移量
2 +127--->129 1000 0001
加上一个偏移量 2^(指数位位数-1)-1

8位指数位 2^8 256 一半存负数和0 一半存正数
float的指数位的范围 -127~128
0000 0000 --->-127
0000 0001 --->-126
.....
1000 0000 --->1
1000 0001 ---->2

尾数位 小数点后面的内容 后面 补齐0
1 1000 0001 111 1100 0010 0000 0000 0000

浮点型 存放规则--->
结论
1.浮点型 存放不够精确
== 比较 x==4 整型
浮点型一般不用== 给他一个范围
d<=4.001&&d>=3.999
double和float 赋值一样但是保存的值不一样

float快 精度要求不高 float 不然double

**** 保存数据都是近似值

3.进制转换
10进制转2进制--->除2求余
10进制转8进制 除8求余
除16求余 (a~f 表示 10~15) 可以大写A~F

16进制 --->10进制

N进制转10进制
0xAF--->从右往左 从0开始依次标号
每一位*N^标号(求和)

2进制和16进制相互转换

0xAF
2进制--> 1010 1111

一位16进制转4位二进制

二进制转16进制
1100 0000 1111 1100 0010 0000 0000 0000
-->C0FC2000 四位转一位 -->0xC0FC2000

一位8进制转3位二进制 3位二进制转一位8进制

动笔算 --->最后的结论 全部写16进制-->直接提交结果
1.算二进制 (用char 8位算)
98
-76
选做
2. 算二进制(float 32位二进制算)
-3.625

short(int)
long (int)

2018.05.13   21:24:13

C++学习(四)(C语言部分)之 二进制的更多相关文章

  1. 值得学习的C语言开源项目

    值得学习的C语言开源项目   - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工 ...

  2. 【C/C++开发】值得学习的C语言开源项目

    值得学习的C语言开源项目 - 1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...

  3. GO学习-(19) Go语言基础之网络编程

    Go语言基础之网络编程 现在我们几乎每天都在使用互联网,我们前面已经学习了如何编写Go语言程序,但是如何才能让我们的程序通过网络互相通信呢?本章我们就一起来学习下Go语言中的网络编程. 关于网络编程其 ...

  4. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  5. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

  6. TweenMax动画库学习(四)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  7. Java学习笔记:语言基础

    Java学习笔记:语言基础 2014-1-31   最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...

  8. SQL的四种语言和数据库范式

    1. SQL的四种语言 DDL(Data Definition Language)数据库定义语言 CREATE ALTER DROP TRUNCATE COMMENT RENAME DML(Data ...

  9. IOS学习笔记07---C语言函数-printf函数

    IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...

  10. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

随机推荐

  1. 微信小程序code 换取 session_key

    code 换取 session_key ​这是一个 HTTPS 接口,开发者服务器使用登录凭证 code 获取 session_key 和 openid.其中 session_key 是对用户数据进行 ...

  2. javascript 日期函数

    获取当前日期的前一天的日期    var MyDate = new Date( );  //获取昨天的日期    var yesterday = myDate.getTime()-1000*60*60 ...

  3. day15-python常用内置模块的使用

    在日常的开发工作中,我们要写很多的python代码,如果都写在一个文件中,会导致代码特别难维护,为了拓展代码的可维护性,我们把函写在不同的文件里,这样每个文件包含的文件就比较少,逻辑更加清楚.在pyt ...

  4. 《Python》常用内置模块

    一.time模块(时间模块) 三种格式: 1.时间戳时间(timestamp):浮点数,秒为单位,从1970年1月1日0时距今的时间 1970.1.1  0:0:0 英国伦敦时间(开始时间) 1970 ...

  5. swiftlint 你所要知道的所有!!

    swiftin Should the opening brace of a function or control flow statement be on a new line or not ?:) ...

  6. [Linux]Linux下开启snmp支持IPV4和IPV6

    SNMP简介 简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol).数据库模型(database schema)和一组资源 ...

  7. C/C++知识补充 (1)

    ● C++的圆括号运算符() 下列关于圆括号运算符的功能说法不正确的是(C) . A. 可用于强制类型转换 B 可用于类型构造 C 可用于类型声明 D 可用于函数调用 对大部分可重载的运算符来说,它既 ...

  8. Android : iperf-2.0.4 网络测试工具

    一.源码下载及交叉编译: 下载:https://pan.baidu.com/s/1i6NYDF3   //包含linux和windows上的可执行文件 1. 解压后获得perf-2.0.4源码.2. ...

  9. 什么是Java优先级队列(Priority Queue)?

    PriorityQueue是一个基于优先级堆的无界队列.它的元素是按照自然顺序排序的.在创建元素的时候,我们给它一个一个负责排序的比较器.PriorityQueue不允许null值,因为 它们没有自然 ...

  10. Sass 混合宏、继承、占位符 详解

    混合宏-声明混合宏如果你的整个网站中有几处小样式类似,比如颜色,字体等,在 Sass 可以使用变量来统一处理,那么这种选择还是不错的.但当你的样式变得越来越复杂,需要重复使用大段的样式时,使用变量就无 ...