深圳C++培训
达内深圳龙华中心

139-2227-5185

热门课程

深圳C++培训:关于C中的位运算

  • 时间:2017-10-31
  • 发布:深圳C++培训
  • 来源:达内新闻

深圳C++培训告诉你关于C中的位运算,深圳C++培训(sz.c.tedu.cn)专家就针对关于C中的位运算这一问题做一个详细的分解。希望能在工作中对你有所帮助!

 许多童鞋对C语言编程掌握得不错,能够编出一些不俗的法式。但是对于C语言中提供的位运算却知之甚少,很少乃至不会灵活的运用。其实位运算是C语言的精髓之一,巧妙的利用位运算有时能大大的减少机器负担,进步法式的运转效力。

下面让我通过一个标题带领大家一起探究一下C中的位运算。一起来搞搞事情吧!

起首对标题作简单阐明,这里的轮回移位的意思是将右移出的位补到最左边,例如:

对1:

0000 0000 0000 0001

右移1位变成:

1000 0000 0000 0000

现在要办理这个成绩,起首咱们需要先停止一些准备,同时也是一个预热:写一个输入数据的二进制码的办法,如下:

其中sum是传入要被输入处置的数,z是其所占字节数

能够看到取位值的技巧便是移相应位后与1取&,其他在此不作过量阐明。

接下来进入正题了,输入获取值的不作讲解,间接代码伺候:

值得注意的是:

sum为储存目标变换数的变量,c_sum为移位数,z用来存储该环境下整型所占字节数。

再接下来便是轮回移位的症结:怎样个移法,怎样个办理方案?

如下图单纯移位运算行不行呢?

咱们无妨运转测试一下:

但是,成绩就出在了移位后第一位的1上

那末若何办理,无妨用个断定语句去其首位的1

能够看出法式曾经准确运转了!

接下来咱们再具体聊聊法式中。

If语句用以断定数据的第一位是不是1,而假如是1的话,接下来的处置便是症结了,假如处置欠好会招致后面全体补1乃至完全乱码。

有很多种处置办法,正所谓条条大路通罗马。这里我只给出我的办法的说明。

①先将sum右移1位,第一位会主动补1,备用;

②再将1左移到第一位,后面会全体补0,接下来取反,也就变成为了0后面一堆1;

③将上一步中得的补码与1中得的补码&,1中补码的第1位也就被替换成为了0;

④末了取sum的末了1位右移到第一位与3中所得补码停止|或^运算。

修修补补的事情就不过量赘述。值得注意的是法式实现后能间接AC掉这道题,能够将测试办法bin()正文或间接删掉,这是一种异常好的编程技巧,能够大大低落法式保护的难度,进步编程效力和代码可读性!

想知道更多关于IT行业的信息吗?想远远不如行动,行动起来,一起加入达内,一起进入IT行业,跟着达内的脚步,一起走进如今的互联网信息时代,带给你不一样的色彩生活——【深圳C++培训

更多文章:
1、深圳C++培训:如何快速掌握C语言?
2、深圳C++培训:学C++开发要不要参加C++培训班?
3、学了C++都能从事哪些工作?

上一篇:深圳C++培训:C++开发面试题目及答案
下一篇:深圳C++培训:学好C语言你可以做什么?

深圳C++培训:C/C++语言要学习哪些内容?

深圳C++培训:为什么只有少数人能学会编程?

深圳C++培训:C语言数据的基本类型有哪些?

深圳C++培训:C语言入门太难,想放弃怎么调整心态?

选择城市和中心
贵州省

广西省

海南省