C++学习(四)之 二进制

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

二进制简介
只有 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的 几次幂

2018.05.13   21:24:13

猜你喜欢

转载自www.cnblogs.com/Yuuki-/p/9033416.html
今日推荐