早教吧 育儿知识 作业答案 考试题库 百科 知识分享

"给定任意0~9999的数字,分别打印出其各个位的数字.如2143打印2,1,4,3.比如143,打印出0,1,4,3在Linux下的权限,分为读,写,执行.分别对应4(100),2(010),1(001).那么任意给一个0~7的数字,使用位运算计算出

题目详情
"给定任意0~9999的数字,分别打印出其各个位的数字.如2143打印2,1,4,3.比如143,打印出0,1,4,3
在Linux下的权限,分为读,写,执行.分别对应4(100),2(010),1(001).那么任意给一个0~7的数字,使用位运算计算出该数字具有的权限.显示结果:
您的权限为:5 (101)
您具有:读 执行 的权限
▼优质解答
答案和解析
告诉你一个简单的思路吧.希望对你有点用.
就是依次判断
比如判断 A 这个数字
你先从最大的判断 大于1000 就取 int(A/1000) 为千位数
然后 用A 减去 int(A/1000)*1000 出来 千以下的部分B 然后
判断B 是否大于100 就取 int(A/100) 为百位数
然后 用B 减去 int(A/100)*100 出来 百以下的部分 C
以此类推
另外一个也可以用类似方法判断
比如二进制的7 只用3位 那就最高位为1时的数字就是4
你就从4开始判断
如果a>=4 时 a=a-4 A有权限1 ( 如果成立a已经是减过4的值了,不成立证明没有权限1)
a>=2 时 a=a-2 A有权限2 ( 如果成立a已经是减过2的值了,不成立证明没有权限2)
以此类推
我只能从理解方面提示你了,程序得你自己做 只提供一个思路.希望对你有用