进制之间转换——day_01
一、计算机文件大小单位
- b = bit 位(比特)
- B = Byte 字节
- 1B = 8b #一个字节等于8位 简写
- 1Byte = 8 bit
- 1KB = 1024B
- 1MB = 1024KB
- 1GB = 1024MB
- 1TB = 1024GB
- 1PB = 1024TB
- 1EB = 1024PB
二、进制之间的转换 (数字都是0开始,在几进制的基础上少1,从0计算)
二进制:由2个数字组成,有0和1 例如:0b101
八进制:由8个数字组成,有0,1,2,3,4,5,6,7 例如:0o127
十进制:由10个数字组成,有0,1,2,3,4,5,6,7,8,9 例如:250
十六进制:由16个数字组成,有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(字母大小写都可以,分别代表10,11,12,13,14,15) 例如:0xff 0XFF 0Xff
2.1 二进制转换十进制
- #例如 0b10100101
- 运算:1*2^0 + 0*2^1 + 1*2^2 + 0*2^3 + 0*2^4 + 1*2^5 + 0*2^6 + 1*2^7 = 165
- 1*2^0 分析 左边第一位为二进制右边第一位,后面以此类推,2^0:2为固定数字,^0表示几次幂,几次幂逐渐递增。2^0就表示2的0次幂,任何数的0次幂为1
2.1.1 八进制转十进制
- 例如:0o127
- 运算: 7*8^0 + 2*8^1 + 1^8^2 =87
- 7*8^0 分析 左边第一位为八进制右边第一位,后面一次类推,8^0:8为固定数字(表示几进制),^0表示几次幂,几次幂逐渐递增。8^0就表示8的0次幂
2.1.2 十六进制转十进制
- #例如:0xff
- 运算:15*16^0 + 15*16^1 = 255
- 15*16^0 分析: 左边第一位15为十六进制右边第一位。16^0表示16进制的0次幂
2.1.3: 十进制转二进制
- 426 => 0b110101010
- 运算过程: 用426除以2,得出的结果再去不停地除以2,
- 直到除完最后的结果小于2停止,
- 在把每个阶段求得的余数从下到上依次拼接完毕即可
2.1.4 十进制转八进制
- 426 => 0o652
- 运算过程: 用426除以8,得出的结果再去不停地除以8,
- 直到除完最后的结果小于8停止,
- 在把每个阶段求得的余数从下到上依次拼接完毕即可
2.1.5 十进制转十六进制
- 运算过程: 用426除以16,得出的结果再去不停地除以16,
- 直到除完最后的结果小于16停止,
- 在把每个阶段求得的余数从下到上依次拼接完毕即可
2.1.6 二进制与八进制转换
- 二进制与八进制对应关系:
- 八进制 二进制
- 0 000
- 1 001
- 2 010
- 3 011
- 4 100
- 5 101
- 6 110
- 7 111
- 例:1010100101
- 八进制:从右向左 3位一隔开 不够三位用0补位 变成:
- 001 010 100 101
- 0o 1 2 4 5
2.1.7 二进制与十六进制转换
- 十六进制 二进制
- 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
- 例:1010100101
- 十六进制:从右向左 4位一隔开 不够四位用0补位 变成:
- 0010 1010 0101
- 0x2a5
2.1.8 八进制与十六进制的转换
- 先转换成二进制 再去对应转换
- 比如:0x2a5 转换成 1010100101 再转8进制 0o1245
2.2 原码,反码,补码
- #1.原码和补码都是二进制数据
- 原码:二进制的表现形式
- 反码:二进制码0变成1,1变成0叫做反码,[原码][补码]之间的转换形式.(首位符号位不取反)
- 补码:二进制的存储形式
- 数据用原码形式显示
- 数据用补码形式存储
- [原码] 和 [补码] 可以通过[反码]互相转化,互为取反加1
- #2.原码的正负关系:
- 原码特点:第一位是1
- 00000000 1 表达数字正1
- 10000000 1 表达数字负1
- #3.补码的正负关系:
- 补码特点:高位都是1
- 00000000 1 表达数字正1
- 11111111 1 表达数字负1
- #4.运算顺序:
- 补码 -> 原码 -> 最后人们看到的数
- ***进制转换的时候需要先把内存存储的补码拿出来变成原码在进行转换输出***
- 转换规律:
- 如果是一个正数: 原码 = 反码 = 补码
- 如果是一个负数: 原码 与 反码 之间 , 互为取反加1
- 原码 = 补码取反加1 给补码求原码
- 补码 = 原码取反加1 给原码求补码
- 练习:
- # 9的补码是多少?
- 原码 0000 0000 1001
- 反码 0000 0000 1001
- 补码 0000 0000 1001
- 分析:1001 表示9的二进制 故原码就为0000 0000 1001,因为是正数故原码反码补码都是一样的
- # -9的补码是多少?
- 原码 0000 0000 1001
- 反码 1111 1111 0110
- 补码 1111 1111 0111
- 分析: 1001 表示9的二进制 故原码就为0000 0000 1001,因为为-9,故负数的反码为原码取反,故为1111 1111 0110,补码为反码+1,为1111 1111 0111
- 当然也可以直接理解为负数的补码为原码取反+1
- #给补码求原码
- # 1111 ... 0011 (高位都是1) 负数 互为取反加1
- 补码 1111 ... 0011
- 原码 1000 ... 1101
- 分析:已知为负数,故高位左边第一位为1,首先先取反,故反码为1000...1100,然后原码为再加1为 1000...1101
- # 0000 ... 1010 (高位都是0) 正数 原码 = 反码 = 补码
- 补码 0000 ... 1010
- 原码 0000 ... 1010
- 分析:正数为 原码 = 反码 = 补码
- #运算相加
- '''
- # 9+(-5) 用二进制相加运算一下
- '''
- 9的 :原码 0000 1001
- 反码 0000 1001
- 补码 0000 1001
- -5的:原码 1000 0101
- 反码 1111 1010
- 补码 1111 1011
- 9+(-5): 0000 1001
- 1111 1011
- 0000 0100 (最终结果)
- 分析:首先先求出9的补码,再求出-5的补码,最后结果相加 就得出4的补码
进制之间转换——day_01的更多相关文章
- java 数字进制之间转换
//10进制转换 16进制 System.out.println(Integer.toHexString(val)); System.out.println(String.format("% ...
- C# Socket发送接收字节数组和十六16进制之间转换函数
近期在使用远程网络模块的时候, 需要用的Socket发送数据,远程模块指令为16进制. 官方提供的DEMO比较繁琐.不方便新手使用. 下面的转换函数可大大方便新手使用. // 16进制字符串转字节数组 ...
- Integer类的进制之间转换的方法
一.两个通用方法 1.public static String toString(int i,int radix) (1)作用 将十进制的数转化成指定进制数的字符串形式:radix参数指进制数: (2 ...
- PHP中进制之间的互相转换
常见的进制: 二进制 binary -----> bin 八进制 octal -----> oct 十进制 decimal -----> dec 十六进 ...
- Java基础知识强化106:Java中 int 的各进制之间的转换
1.二.八.十.十六进制之间的转换 下面是示例代码,我们直接通过JDK工具库中的方法实现的,如下: public static Integer valueOf(String s, int radix ...
- python中的2、8、16、10进制之间的转换
python除法的坑 众所周知,python除法有两个运算符,一个是/,还有一个是//,那么这两个有什么不同之处呢? 从图片可以得知,使用//返回一个float类型,而使用/返回一个int类型.我们总 ...
- JavaScript中进制之间的转换
JavaScript中进制之间的转换 //十进制转其他 var x = 100; alert(x); alert(x.toString(2)); //转2进制 alert(x.toString(8)) ...
- bgcolor RGB 和16进制之间的转换,16进制转RGB,源码
<p>bgcolor RGB 和16进制之间的转换,16进制转RGB,源码例如:<br /> 输入 201,255,201 转换成 #C9FFC9</p> < ...
- matlab学习笔记10_6 字符串与数值间的转换以及进制之间的转换
一起来学matlab-matlab学习笔记10 10_6 字符串与数值间的转换以及进制之间的转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合 ...
随机推荐
- CodeForces 190C STL
Portal: http://codeforces.com/problemset/problem/190/C 一道卡输入输出的蛋疼题 题意:给你一个由pair和int所组成的沙茶字符串(最大含有1e5 ...
- 2019NYIST计科第七次周赛总结
2019NYIST计科第七次周赛总结 文章目录 2019NYIST计科第七次周赛总结 [秤取物体重量( 二进制枚举法)](https://blog.csdn.net/qq_34261446/artic ...
- html5调用手机摄像头
<input type="file" accept="image/*" capture="camera"><input t ...
- 团队项目-运动App
一:团队成员介绍 队长:温学智 博客地址:https://www.cnblogs.com/dazhi151/ 技术型大佬,学习能力相对团队来说是最高的.并且作为班 ...
- 阿里云服务器扩展分区和文件系统_Linux数据盘
官方文档永远是最好的 https://help.aliyun.com/document_detail/25452.html?spm=a2c4g.11186623.6.786.5fde4656Ln6AO ...
- 10.2 io流 之字节流和字符流
FileWriter 用于写入字符流.要写入原始字节流,请考虑使用 FileOutputStream. io流相关文档: https://www.cnblogs.com/albertrui/p/836 ...
- go 中的WaitGroup
wait_group sync.WaitGroup 类型是并发安全的,也是开箱就能用的. 该类型有三个指针方法,即:Add,Done和Wait. sync.WaitGroup是一个结构体类型.其中一个 ...
- java 字符串截取 - 最后带上mysql字符串截取比较
Java中的substring()方法有两个方法的重载,一个带一个参数的,一个带两个参数的. 第一种写法: substring(n);//从索引是n的字符开始截取,条件(n>=0,n<字符 ...
- 如何使用Swagger-UI在线生成漂亮的接口文档
一.简单介绍 Swagger是一个实现了OpenAPI(OpenAPI Specification)规范的工具集.OpenAPI是Linux基金会的一个项目,试图通过定义一种用来描述API格式或API ...
- Laravel Passport token过期后判断refresh_token是否过期
需求:前后端分离状态下,登录失效(token过期)后,前端需要知道下一步是跳转到登录页面还是使用refresh_token刷新token. 这就需要后端根据是否可以刷新token(refresh_to ...