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

二进制简介
只有 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. .NetCore发布到Centos docker

    将.netcore mvc项目发布到centos7的docker中.环境 vmware14+Centos7+docker-ce 1.使用vs将.netcoremvc项目发布到本地,修改发布后的目录 名 ...

  2. python-列表,元组,range

    # 列表# lst = ["光头强", 1, True, {}, (1, ), {123}, ["周杰伦",[], "周杰", " ...

  3. 快递小哥逆袭自传:用了6年时间做到了IT部门主管

    在我30岁生日那天,终于收到升职的通知,自己如愿的也从一名小小程序员升职成为IT主管,负责公司硬件设备驱动程序开发项目,工资也从原来月薪10K变到现在月薪20K.或许对于很多人而言,在三十岁的时候,可 ...

  4. js中字符串转数字的方法

    1.当字符串中是纯数字 例如:var s = '234'; /********** 字符串在运算操作中会被当做数字类型来处理 ***************/ s *= 1; /******* str ...

  5. Struts2的基础知识

    Struts2属于MVC框架 Struts2的优点: 1.侵入性低 2.提供了拦截器,可以利用拦截器进行AOP编程 3.提供了类型转换器 4.支持多种表示层技术:jsp,freeMarker,Vele ...

  6. RTTI,C++类型转换操作符

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  7. lxml简单用法 解析网页

    import requests s=requests.Session() re=s.get(lgurl,headers=headers)  #此处s可以直接换成requests the_page=re ...

  8. POJ - 1942 D - Paths on a Grid

    Imagine you are attending your math lesson at school. Once again, you are bored because your teacher ...

  9. C++类构造函数初始化列表(转)

    构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: { public:     int a;     float b;     //构 ...

  10. day 46 前端基础 基本框架

    注意一点 使用绝对路径的时候 在pxm里 打开显示不了图片 可以直接找到那个实际的网页去打开 还可能是图片的格式尽量用jpg一 详细解释 <!DOCTYPE html>声明为HTML5文档 ...