位运算全解:轻松实现进制转换计算

版权申诉
0 下载量 181 浏览量 更新于2024-10-07 收藏 4.18MB ZIP 举报
资源摘要信息:"本资源主要介绍了计算机科学中的重要基础概念,即位运算和进制转换。标题中提到的'bc.zip_位运算_进制转换'暗示该资源为一个包含相关知识与工具的压缩文件,文件名称'位运算(全)'表明资源内容可能与位运算的全面知识相关。描述中所提及的'十进制转换二进制,八进制,16进制计算小程序'则直接指出了资源内容的一个具体应用——开发一个小程序,它能够帮助用户快速完成从十进制到其他常用进制(二进制、八进制、十六进制)的转换。 首先,关于位运算,这是计算机科学中的一个核心概念,涉及对二进制位的直接操作。位运算主要包括以下几种类型: 1. 与(AND)运算:对应于逻辑中的'且'操作,其运算规则是两个对应位都为1时结果位才为1,否则为0。 2. 或(OR)运算:对应于逻辑中的'或'操作,其运算规则是两个对应位中至少有一个为1时结果位就为1。 3. 非(NOT)运算:对应于逻辑中的'非'操作,其运算规则是将每一位取反,即0变为1,1变为0。 4. 异或(XOR)运算:对应于逻辑中的'异或'操作,其运算规则是两个对应位相同时结果为0,不同时为1。 5. 左移(Shl)运算:将操作数的二进制表示向左移动指定位数,右边移出的部分丢弃,左边空出的位置补0。 6. 右移(Shr)运算:将操作数的二进制表示向右移动指定位数,左边移出的部分丢弃,右边空出的位置补0(逻辑右移补0,算术右移补符号位)。 位运算是实现计算机算法和数据结构的基础,广泛应用于数据加密、图像处理、性能优化等领域。掌握位运算能够帮助开发者编写更为高效、紧凑的代码。 进制转换是计算机科学中的另一个基础概念,它涉及不同数制系统之间的转换,常见的有十进制、二进制、八进制和十六进制。计算机内部数据的处理和存储主要基于二进制系统,但为了便于人阅读和编写代码,通常会使用十六进制和八进制作为辅助表示方式。进制转换的具体规则如下: 1. 十进制转二进制:将十进制数除以2,记录下余数,再将商继续除以2,重复此过程直到商为0,将得到的余数逆序排列得到二进制数。 2. 二进制转十进制:从最低位开始,将每一位的值乘以2的幂次方(从0开始递增),然后将这些乘积求和得到十进制数。 3. 十进制转八进制或十六进制:与转二进制类似,只是在除以8或16时记录余数,并将余数逆序排列。 4. 八进制或十六进制转十进制:从最低位开始,将每一位的值乘以8的幂次方或16的幂次方(从0开始递增),然后将这些乘积求和得到十进制数。 进制转换在计算机编程、数字电路设计、数据通信等领域中扮演着重要的角色。例如,在进行网络数据包分析时,通常需要将IP地址从十进制转换为二进制形式来更好地理解网络协议的工作原理。 综上所述,本资源将为用户提供一个关于位运算和进制转换的全面学习材料,通过实际的计算小程序实例,加深对这些基础知识的理解和应用。开发者通过熟练掌握这些知识点,能够更高效地进行计算机编程和系统优化,为解决实际问题提供坚实的基础。"

select c.area_name,c.mon,c.count,ifnull(c1.count1,0),ifnull(c1.count1,0)/count * 100 from ( select a.area_name,MONTH(pb.wlpb_create_time) mon,count(pb.id) count from bc_company_info b inner join ( select b.id from wk_ledger_produce_gather g left join bc_company_info b on b.id =g.bci_id where g.wlpg_year =2022 group by b.id HAVING sum(g.wlpg_total_produce) >=30 UNION select b.id from wk_plan_info p left join wk_plan_danger d on d.wpi_id = p.id left join bc_company_info b on b.id = p.bci_id where p.wpi_year = 2022 group by b.id HAVING sum(d.wpd_this_produce) >30) b1 on b1.id = b.id left join wk_ledger_produce_bill pb on pb.bci_id = b.id left join sys_area a on a.id = b.bci_city where pb.wlpb_create_time >'2023-01-01 00:00:00' group by b.bci_city,MONTH(pb.wlpb_create_time) ) c left join ( select a.area_name,MONTH(pb.wlpb_create_time) mon,count(pb.id) count1 from bc_company_info b inner join ( select b.id from wk_ledger_produce_gather g left join bc_company_info b on b.id = g.bci_id where g.wlpg_year =2022 group by b.id HAVING sum(g.wlpg_total_produce) >=30 UNION select b.id from wk_plan_info p left join wk_plan_danger d on d.wpi_id = p.id left join bc_company_info b on b.id = p.bci_id where p.wpi_year = 2022 group by b.id HAVING sum(d.wpd_this_produce) >30) b1 on b1.id = b.id left join wk_ledger_produce_bill pb on pb.bci_id = b.id left join sys_area a on a.id = b.bci_city where pb.wldb_end_from != 1 and pb.wlpb_create_time >'2023-01-01 00:00:00' group by b.bci_city,MONTH(pb.wlpb_create_time)) c1 on c.area_name = c1.area_name and c.mon = c1.mon 这段SQL怎么优化

2023-06-09 上传