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