美文网首页
位运算设置获取数值

位运算设置获取数值

作者: 我真的不是张亮 | 来源:发表于2018-08-16 21:51 被阅读98次

最近在项目中遇到一个问题,就是我一个题目可以分为10种题型(每题的题型是固定的),后台要求上传这10种题型的对错,想想有什么好的办法呢   

    1、最差的就是让后台设置10个字段,给每个字段赋值,是否做对了,但是这个太恶心了,如果后加到了11中题型怎么办

    2、用一个数组装10个题型的对错,并按照顺序排列,这是一种方案,

3、更好的方案是用一个数字来标示这10个题目的对错,这10个题目的顺序是固定的,那么就可以把10个题目的对错转成二进制标示,最后就变成一个十进制数字上传到服务器了

    那怎样设置呢

    首先先搞懂几个运算符

    按位与: & 

按位与

就是说只要两个同位置上的数字不同为1,那么就是0,这有什么作用呢

这个是可以用来取值的  ,比如我想取出第三位的数字是不是正确的

取出第三道题是不是正确的

只要在第三个位置是1,其余位置是0.那么按位取与的结果如果有值,那么就表示第三道题正确,如果没有,就表示第三道题错误,那怎么才能&000000100这样的数字呢,其实他就是(1<<3),就表示向左移三位

说完取值,那说说怎么设置题目的正确与否呢,比如我第三道题对了,那我怎么让第三个位置变成1,其余变成0呢

按位或:|

这个时候就需要用到按位或运算符

按位或运算符

按位或运算符就是只要有一个是1,那就是1   ,按位或运算符设置完之后,那第三个位置肯定是1了,就表示第三道题设置正确了

那如果我要设置第三道题错误,其他都对呢

    按位取反:~

    上面我们知道(1<<3)左移运算符标示第三位是1其余是0,但是我们如果设置第三位是0其余不变的话,我们就不能用按位或运算符了,这是后,我们应该与上一个第三位是0,其余都是1的数字

第三题错误,设置数值

这样就能设置第三题做错了,但是这个11111011怎么写呢,这个时候就是需要用到按位取反~了,我们知道(1<<3)标示00000100,那~(1<<3) 就标示11111011,所以这个时候就设置好了

按位取反

所以当有多个设置BOOL值的需求的时候,就可以用位运算来做,很方便

相关文章

  • 位运算设置获取数值

    最近在项目中遇到一个问题,就是我一个题目可以分为10种题型(每题的题型是固定的),后台要求上传这10种题型的对错,...

  • 2018-06-20 逻辑运算符

    逻辑运算符 Boolean类型运算时如下: 数值类型运算, 位运算符: 位运算时,是以二进制位来计算 ~是按位取反...

  • iOS获取及设置设备音量

    设置音量相关 1. 获取MPVolumeView 2.获取MPVolumeView上面的滑条 3.设置大小:参数值...

  • C++运算符重载3

    重载输入输出流运算符 代码 相关说明 ostream这个类提供了setf()函数,可以设置数值输出时是否要带标志位...

  • shell系列3-运算符

    一. 数值运算符 整数判断: 二. 算数运算符 三. 字符串判断 四. 逻辑运算符 五. 位运算符 位运算符在Sh...

  • Android控制颜色透明度百分比的方法

    颜色的值是以16进制来表示,而颜色的透明度值要设置在原有颜色值上则需要左移6位。 Java的位运算是先将数值转化为...

  • jmeter设置参数的方法(随机,读csv等)(转)

    本文为整理jmeter设置参数的方法设置参数值的方法有如下几种:1. 用Jmeter中的函数获取参数值,__Ran...

  • JavaScript入门教程--JS学习笔记02

    一.运算符(操作符) 可以对一个或多个值进行运算,获取运算结果。 1.当对非Number数值进行运算时,会将这些值...

  • shell之运算符

    expr 或 let 数值运算工具 注意:+号左右必须有空格 $((运算式)) 或 $[运算式] 数值运算工具

  • Day03

    一. 位运算符(了解) 定义对数值进行二进制的位运算在位运算中 0 为假, 1为真 分类& : 有0则为0| : ...

网友评论

      本文标题:位运算设置获取数值

      本文链接:https://www.haomeiwen.com/subject/smqabftx.html