光怪陆离系列1

位运算数字电路通过存储0/1来表示逻辑电路,通过晶体管搭建不同功能的逻辑门来实现对0/1符号串中每一位的布尔运算。 

从集成电路物理实现,在0/1的数字世界里,逻辑运算和布尔代数才是实现一切计算的真正的理论基础。对于数字电子计算机而言,一切计算的本质是0/1之间的与或非。

位运算是指施加在0/1符号串上的布尔运算。规则一对给定的等长的0/1字符串,从左到右按位对齐,逐一对每一位进行布尔运算(与,或,非);二对单个定长的0/1字符串,根据应用的需求进行位运算(非,左移位,右移位)。

 网络通信领域的应用开发,巧用位运算能大大提高程序的执行效率。

二进制bin,八进制oct,十进制dec,十六制hex。

进制的两大规则,一任何一个数都可以用不同的进位制表示,二任何一个进制的表示都可以用按权展开的形式转化成十进制。例如(1001)2=2^3+2^0=(9)10;

 十进制转化为二进制:整数部分:除二取余法(余数法),整数除以二留取余数,就是用十进制的余数与二进制的余数一一对应来求得二进制的值,下图为例子。

 实际应用,第一个的商为b0,值即为1,一直除到余数为0结束。

 小数部分:乘二取整法(进位法),小数部分乘二取整数。

 实际应用

 问题->算法->程序

算法的输入与输出,0~多个输入量,1~多个输出量;算法实现之前可能需要设定一些参数,计算后会得到一些输出结果;例如整数取余法的输入有一个十进制整数d,输出有一个二进制整数b。算法包含有限的步骤(用顺序,分支,循环结构进行组织),否则算法不会结束,例如死循环,每个步骤都是可行的,例如x除以0就是不可行的,因为0不可以做余数,每个步骤都是明确的,例如x足够接近0就是不明确的,因为计算机不知道什么叫做足够接近。

 

 

 replace函数的功能是替换子串

 第二行的意思, for语句依次将字符串n里的每个字符取出赋给x,再将每个字符x代入到int函数里面,转换成整数,最后再将转换的整数组织成列表。

n=123456
L=[int(x) for x in str(n)]
print(L)

程序的作用是提取n的各个数位,依次存放在列表里面。

第三行用in判断是否符合条件,符合就合法,否则就不合法,再用not找到不合法的,not放在前后都行,后面更符合语法习惯。

或的条件是判断字符大小,字符0~9的大小规则与数字0~9的大小规则是一致的。

 将三四布合并简化开始需要设置B的类型,又因为最初的B不包含任何元素,所以是空字符串。

d除以2的余数可以用%表示;d除以2的商可以用//表示错误点:判断d=0时,直接输出b,为原来的空字符串。 

 

如何查看死循环 (循环体的条件一直成立)或者结果不对,可以用调试功能查看中间量,或者用Print函数,在循环体中加一个print函数,将中间量输出查看,感觉有点类似调试,例如上图,将d的变化情况表达出来,寻找循环体一直成立的原因。

正确计算负数的进制转换,先把负号去掉,将数字部分进行整数取余法,再在结果前加上负号。

循环前多一个判断,是否为负数,设置一个变量存放符号位
sign=''
if d < 0
   d = -d
sign='-'
return sign+b

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值