计算机进制理解
来源:互联网 发布:windows返回快捷键 编辑:程序博客网 时间:2024/05/17 07:35
1.进制表示
int a = 10; // 十进制
int a = 0b10; // 二进制 : 0b或0B标识
int a = 010; // 八进制 : 0标识
int a = 0x10; // 十六进制 : 0x或者0X标识
2.进制输出表示
printf("%i", a); // 十进制输出
printf("%o", a); // 八进制输出
printf("%x", a); // 十六进制输出
3.十进制转二进制
规律:十进制除以2取余,倒序读取
4.二进制转十进制
规律:转换原理:乘以2的幂数(幂数从0开始), 然后相加
5.二进制转八进制
规律: 三个二进制代表一个八进制位,只需要将3个二进制位转为十进制,之后再将所有的结果连接起来
6.二进制转十六进制
规律:四个二进制位代表一个十六进制位,只需要将4个二进制位转为十进制,之后再将所有的结果连接起来
7.二进制的源码/ 反码/ 补码
二进制的第一位是二进制的符号位,如果该位是0代表这个书是一个正数,如果该位是1代表这个数是一个负数
正数的源码反码补码都是一样的,三码合一
二进制的最高位我们称之为符号位
如果符号位是0代表是一个正数,
如果符号位是1代表是一个负数
10000000 00000000 00000000 00001100 (-12的原码)
11111111 11111111 11111111 11110011(反码, 符号位不变其它位取反)
11111111 11111111 11111111 11110011
+00000000 00000000 00000000 00000001
_____________________________________________
11111111 11111111 11111111 11110100(补码 , 反码+1)
结论:无论正数负数在内存中存储的都是补码
11111111 11111111 11111111 11110101 (补码)
-00000000 00000000 00000000 00000001 (-1)
_____________________________________________
11111111 11111111 11111111 11110100 (反码)
10000000 00000000 00000000 00001011
负数反码 : 最高位不变,其他位取反
负数补码 : 负数的反码+1
8.位运算(二进制运算)
/*
& 按位与 : 一假则假,任何数和1相&得到的结果还是那个数
| 按位或 : 一真则真
^ 按位异或 : 不相同为1,相同为0;
^ 规律 : 1.异或的结果和参与运算的顺序没有关系
2.相同的两个数异或等于0
3.任何一个数异或上0结果不变
4.任何一个数异或一个数两次,结果不变
~ 取反 : 0变1,1变0
~9
0000 0000 0000 0000 0000 0000 0000 1001
~1111 1111 1111 1111 1111 1111 1111 0110 (补码)
0000 0000 0000 0000 0000 0000 0000 0001
______________________________________________
1111 1111 1111 1111 1111 1111 1111 0101 (反码)
1000 0000 0000 0000 0000 0000 0000 1010
*/
9.左移(<<) 右移(>>)
左移(<<) : 左移就是用左移的数乘以2的移动次幂
注意点 : 由于左移运算,被移动的书的最高位会被抛弃(移除),所以左移有可能会改变一个数的政正负性
右移(>>) : 右移就是用右移的数除以2的移动次幂
9 >> 1 == 9 / 2(1) = 4
1.进制表示
int a = 10; // 十进制
int a = 0b10; // 二进制 : 0b或0B标识
int a = 010; // 八进制 : 0标识
int a = 0x10; // 十六进制 : 0x或者0X标识
2.进制输出表示
printf("%i", a); // 十进制输出
printf("%o", a); // 八进制输出
printf("%x", a); // 十六进制输出
3.十进制转二进制
规律:十进制除以2取余,倒序读取
4.二进制转十进制
规律:转换原理:乘以2的幂数(幂数从0开始), 然后相加
5.二进制转八进制
规律: 三个二进制代表一个八进制位,只需要将3个二进制位转为十进制,之后再将所有的结果连接起来
6.二进制转十六进制
规律:四个二进制位代表一个十六进制位,只需要将4个二进制位转为十进制,之后再将所有的结果连接起来
7.二进制的源码/ 反码/ 补码
二进制的第一位是二进制的符号位,如果该位是0代表这个书是一个正数,如果该位是1代表这个数是一个负数
正数的源码反码补码都是一样的,三码合一
二进制的最高位我们称之为符号位
如果符号位是0代表是一个正数,
如果符号位是1代表是一个负数
10000000 00000000 00000000 00001100 (-12的原码)
11111111 11111111 11111111 11110011(反码, 符号位不变其它位取反)
11111111 11111111 11111111 11110011
+00000000 00000000 00000000 00000001
_____________________________________________
11111111 11111111 11111111 11110100(补码 , 反码+1)
结论:无论正数负数在内存中存储的都是补码
11111111 11111111 11111111 11110101 (补码)
-00000000 00000000 00000000 00000001 (-1)
_____________________________________________
11111111 11111111 11111111 11110100 (反码)
10000000 00000000 00000000 00001011
负数反码 : 最高位不变,其他位取反
负数补码 : 负数的反码+1
8.位运算(二进制运算)
/*
& 按位与 : 一假则假,任何数和1相&得到的结果还是那个数
| 按位或 : 一真则真
^ 按位异或 : 不相同为1,相同为0;
^ 规律 : 1.异或的结果和参与运算的顺序没有关系
2.相同的两个数异或等于0
3.任何一个数异或上0结果不变
4.任何一个数异或一个数两次,结果不变
~ 取反 : 0变1,1变0
~9
0000 0000 0000 0000 0000 0000 0000 1001
~1111 1111 1111 1111 1111 1111 1111 0110 (补码)
0000 0000 0000 0000 0000 0000 0000 0001
______________________________________________
1111 1111 1111 1111 1111 1111 1111 0101 (反码)
1000 0000 0000 0000 0000 0000 0000 1010
*/
9.左移(<<) 右移(>>)
左移(<<) : 左移就是用左移的数乘以2的移动次幂
注意点 : 由于左移运算,被移动的书的最高位会被抛弃(移除),所以左移有可能会改变一个数的政正负性
右移(>>) : 右移就是用右移的数除以2的移动次幂
9 >> 1 == 9 / 2(1) = 4
- 计算机进制理解
- 理解计算机
- 理解计算机
- 计算机使用二级制的理解
- C语言编程之深刻理解计算机中的进制01
- 计算机操作系统的理解
- 深入理解计算机3
- 深入理解计算机4
- 计算机通俗理解
- 理解计算机(从无到有)
- 如何理解计算机视觉
- 计算机基本概念的理解
- 深入理解计算机 第一章
- 我理解的计算机
- 计算机码制深入理解——原码
- 计算机码制--深入理解 原码、反码、补码
- 01-理解计算机及计算机的组成
- 计算机进制转换
- POJ 青蛙的约会 1061【经典数论-扩展欧几里得】
- hdoj 2222 Keywords Search 【AC自动机 入门题】 【求目标串中出现了几个模式串】
- 数论基础的补充讲解
- Servlet学习总结
- pull方式解析xml文件以及用Serializer序列化器生成xml文件
- 计算机进制理解
- samba服务器配置文件示例
- FiniteTimeAction,Follow,Speed源码分析
- VC写加密壳
- B2B移动商务社交平台贸人E家APP在深首发
- poj2388Who's in the Middle【堆排序】
- 第三方微博登陆,通过OAuth 2.0 进行授权
- 24. 排序
- HDOJ 5400 Arithmetic Sequence 暴力枚举