进制转换和运算

二进制转换

二进制 满2进1 借1当2 0-1

二进制转八进制互转

八进制 满8进1 借1当8 0-7
8进制和2进制相互转换
0104一位8进制对应3位二进制
0104–>0100 0100

8进制 2进制
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

二进制十进制互转

十进制 满10进1 借1当10 0-9
101010=41
换算方法1x21+1x23+1x25=1+8+32=41
十进制转二进制
正数 -->除2求余 余数倒序写
2->10 4->100 8->1000 16->10000 32->100000
38=32+4+2=100000+100+10=100110

二进制十六进制互转

十六进制 满16进1 借1当16 0-9 ABCDEF
例如 68 对应的二进制就是 0110 1000
二进制的4位等于16进制的一个数

16进制 2进制
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

8进制和16进制可以直接转换成2进制
0~7来表示数字 ,满8进一 , 例如0104(代码在前面加0 表示8进制)

char类型转换

char 只有一个字节 8位二进制
char -128~127
计算机存放存的是补码
正数 直接存二进制 前面补0(补到8位为止) 68—>0100 0100(B)
负数的二进制 负数有符号 -->符号也要存进去
先求负数的绝对值的二进制
-68的二进制
1.求出68的二进制 0100 0100
2.将68的二进制最高位变成1 表示符号位(负数) 1100 0100(原码)
3.将-68的原码 除了最高位之外 全部取反 (1变0 0变1)1011 1011(反码)
4.反码加1 得到补码 1011 1100(计算机存放的二进制)

	补码   取反加1码
	正数的原码反码补码一样 
	相加  原码相加 计算会出错   补码的原因   为了保证二进制运算正确
	补码才是计算机使用的二进制

小数的二进制(了解)

整数部分除以2 小数部分乘以2
浮点型的二进制 float4个字节 double8个字节
步骤
1. 计算小数二进制
2. 小数点移动到第一个1的右边 小数点往左移动n位 那么就是乘以2^n
3. 符号存符号位 指数n+127后存在指数位 小数点后面的尾数存尾数位 (后面补0)
float 32位 规定
1位符号位 存0或者1
8位 存放指数位
23存放尾数位
double 64位 1位符号位 11位指数位 52位尾数位 指数部分 加上2^10-1
–>62.625
算小数二进制
–>111110.101
–>1.11110101*2^5
–>5+127---->1000 0100 (8位指数位)
0 1000 0100 111 1010 1000 0000 0000 0000
在这里插入图片描述

操作二进制

位与(&) 双目运算符 遇0为0,两个都为1时为1,遇零则零
1&0=0 1&1=1 0&0=0
100010&101010

,位或(|) 双目运算符 遇1为1,两个都为0时为0,遇一则一
1&0=1 1&1=1 0&0=0

100010&101010
,位异或(^) 相同为0,不相同为1
100010&101010

原码反码补码

计算机的单位
计算机的最小存储单位 字节
计算机的最小单位 位
1字节=8位
2 =0000 0010
最高位代表符号位 0表示正数 1表示负数
原码是一个字节的二进制码
原码1-1=1+(-1)=0000 0001+1000 0001= -2
1-2=-1
反码 正数的原码=反码
负数的反码 原码的符号不变,其他位取反0
1+(-1)=0000 0001(原)+1000 0001(原)=0000 0001(反) +1111 1110(反)=1000 0000(原)=-0

补码
正数的原码=补码
负数的补码=反码+1;
1+(-1)=0000 0001(原)+1000 0001(原)=0000 0001(反) +1111 1110(反)
=0000 0001(补)+1111 1111(补)
补码的补码是原码=0

原创文章 38 获赞 9 访问量 4540

猜你喜欢

转载自blog.csdn.net/Limit_Fly/article/details/90708281