现有一道题:有一整形变量a其中边存放了13,现想把变量a的二进制位的第二位从0改为1。该如何操作?
首先我们知道整形13的二进制位为:00000000000000000000000000001101。现要将从右向左数第2位上的0改为1该如何操作呢?相信不少同学会说“ +2 ”不就好了吗,我不否定确实可以,单如果我想该的不是第2位而是第16位呢,你还能一下子说出来加多少吗?很显然你不行。而这里我想要讲解一种更加简单的方法。如下图所示:
我们只要在需要将0改为1的二进制位上“或”上一个1,其他二进制位“或”0就可以实现将指定的二进制位改为从0改为1,也就是只要或上一个00000000000000000000000000000010的二进制码就行了。那有同学就要问了:你这里的二进制码又是从何得来的呢?其实很简单,我们知道1的二进制码为:00000000000000000000000000000001,那是不是只需把1向“左移”一个二进制位就可以啦,即:1<<1。
同理若我想将某个二进制位从1改为0,我们只需要将要改的那位“与”上一个0,其他位“与”上一个1就行。如下图所示:
这份博客如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位点赞评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧。