2021-09-25

1、二进制用数字0,1表示,原则是逢二进一,十进制数进位原则是逢十进一,此外计算机常用的还有八进制数,十六进制数。

不同数值之间的转换依据就是:不同数制的每一位所对应的权值不同。

解释一下什么是权值:

权值就是处在某一位上的“1”所表示的数值的大小,称为该位的位权。

比如,1010(2)表示一个二进制数,它的每一位的权值从右往左依次递增,最右边的数字0,在这个数的第0位,所以该位的权值是20;

这里强调一下:在数一个数的某一位时,从右往左依次是第0,1,2,3.…位。要从0开始数。这个数在第几位,它的权值就是几次幂。

从右往左数第二个数字是1,但是它不是第二位,它是第1位,所以它的权值是21,

所以1010(2)这个二进制数转换为十进制数就是每一位上的数乘以他们所对应的权值:020+121+022+123=10(10)

所以1010(2)这个二进制数用十进制数表示就是10。

还有就是二进制小数的转换,比如10.1010(2)转换为十进制数:10.1010(2)=121+12-1+1*2-3=2.625(10)

这里要注意小数部分的权值与整数部分不同,以二进制为例,小数部分从左往右依次是(从1开始)第一位、第二位…那么每一位所对应的的权值是2-1,

第二位是2-2……

2、八进制数:它的权值:第0位是80,第1位是81,……

比如一个八进制数:567(8),它转换为十进制数是:780+681+5*82=375

八进制小数的转换,同二进制。

3、十六进制数:它的权值:第0位是160,第1位是161,……

十六进制因为某一位的最大数值可以是15,但是在某一位上又不可能用2位数表示,所以(习惯上)用大写英文字母AF表示从1015这六个2位数。

即:A=10 , B=11 , C=12 , D=13 , E=14 , F=15。

比如一个十六进制数:4F5,转换为十进制数为:4F5=5160+F161+4*162=1269(10)

十六进制小数的转换,同二进制。比如90.1(16)=9161+116-1=144.0625(10)

以上是二、八、十六进制----->十进制。

4、那么十进制数----->二、八、十六进制数,接下来介绍。

十进制数转换为二进制数时,由于整数和小数转换方法不同,所以要把十进制数的整数和小数部分分别转换后加以合并。

十进制整数转二进制数采用:除2取余,逆序排列。将要转换的数除以2,得到商和余数,继续把商除以2,直到商为0,最后将余数逆序排列。

十进制小数转二进制数采用:乘2取整,正序排列。将要转换的小数乘以2,取出积的整数部分,再用余下的小数继续乘以2,再取出积的整数部分,这样进行到积的小数部分为0,或达到所要求的精度为止。

有些十进制小数无法用二进制精确的表达,转化时符合一定的精度即可,这是计算机浮点数运算不准确的原因。

十进制转换八进制同上。

十进制转换十六进制同上。

5、快速转换法,利用8421码:只适用于二、八、十六进制之间的转换。

二进制快速转换为八进制数:101(2)从右往左依次对应8421码的后三位1、2、4,因为4+2+1=7,正好是八进制数位的最大值7,所以每3位二进制表示一位八进制数。所以多位二进制数在转换时要从右往左,3位一组,最后如果不够3位补0即可。

如果二进制位某位的数值为1,则对应该位的8421码数值相加,如果二进制位某位的数值为0,则对应该位的8421码等于0,不用加。

101(2)=1+4=5(8)

二进制快速转换为十六进制数:1101(2)从右往左依次对应8421码的1、2、4、8,因为8421码4位数相加:1+2+4+8=15,正好对应十六进制数位上的最大值15,所以每4位二进制数表示一位十六进制数。所以多位二进制数在转换时要从右往左,4位一组,最后如果不够4位补0即可。

1101(2)=1+4+8=13=D(16)

相反的,利用8421码也可以完成对八、十六进制转换二进制的快速转换。

特别的:

如果一个八进制数要转换为十六进制数,不能直接转换,要先把八进制数转为二进制,再由二进制转为十六进制。

如果一个十六进制数要转换为八进制数,不能直接转换,要先把十六进制数转为二进制,再由二进制转为八进制。

end.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
使用python中的pymsql完成如下:表结构与数据创建 1. 建立 `users` 表和 `orders` 表。 `users` 表有用户ID、用户名、年龄字段,(id,name,age) `orders` 表有订单ID、订单日期、订单金额,用户id字段。(id,order_date,amount,user_id) 2 两表的id作为主键,`orders` 表用户id为users的外键 3 插入数据 `users` (1, '张三', 18), (2, '李四', 20), (3, '王五', 22), (4, '赵六', 25), (5, '钱七', 28); `orders` (1, '2021-09-01', 500, 1), (2, '2021-09-02', 1000, 2), (3, '2021-09-03', 600, 3), (4, '2021-09-04', 800, 4), (5, '2021-09-05', 1500, 5), (6, '2021-09-06', 1200, 3), (7, '2021-09-07', 2000, 1), (8, '2021-09-08', 300, 2), (9, '2021-09-09', 700, 5), (10, '2021-09-10', 900, 4); 查询语句 1. 查询订单总金额 2. 查询所有用户的平均年龄,并将结果四舍五入保留两位小数。 3. 查询订单总数最多的用户的姓名和订单总数。 4. 查询所有不重复的年龄。 5. 查询订单日期在2021年9月1日至9月4日之间的订单总金额。 6. 查询年龄不大于25岁的用户的订单数量,并按照降序排序。 7. 查询订单总金额排名前3的用户的姓名和订单总金额。 8. 查询订单总金额最大的用户的姓名和订单总金额。 9. 查询订单总金额最小的用户的姓名和订单总金额。 10. 查询所有名字中含有“李”的用户,按照名字升序排序。 11. 查询所有年龄大于20岁的用户,按照年龄降序排序,并只显示前5条记录。 12. 查询每个用户的订单数量和订单总金额,并按照总金额降序排序。
最新发布
06-03
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值