zoukankan      html  css  js  c++  java
  • 全国计算机等级考试二级教程-C语言程序设计_第15章_位运算

    位运算,不适用于实数,仅仅适用于整数、字符。

    C语言的位运算只能操作整数、字符,实数是指数方式表示的,不适用于位运算。

     1 #define _CRT_SECURE_NO_WARNINGS
     2 
     3 #include<stdio.h>
     4 #include<stdlib.h>
     5 
     6 main()
     7 {
     8     unsigned int num = -1;
     9 
    10     printf("%d,%u
    ", num, num);
    11 
    12     system("pause");
    13 }

    输出结果:

    -1,4294967295
    请按任意键继续. . .

    乱码

     1 #define _CRT_SECURE_NO_WARNINGS
     2 
     3 #include<stdio.h>
     4 #include<stdlib.h>
     5 
     6 main()
     7 {
     8     printf("%d
    ", 10.3);
     9 
    10     printf("%f
    ", 10);
    11     
    12     printf("%d
    ", (int)10.3);
    13 
    14     printf("%f
    ", (float)10);
    15 
    16     system("pause");
    17 };

    原码

    也叫 符号-绝对值码

    最高位0表示正,1表示负,其余二进制位是该数字的绝对值的二进制位。

    原码简单易懂

    加减乘除复杂,存在加减乘除四种运算,增加了CPU的复杂度

    零的表示不唯一

    没有在计算机中应用

    反码

    反码运算不便,也没有在计算机中应用。

    移码

    移码表示数值平移n位,n称为移码量

    移码主要用于浮点数的阶码的存储

    补码

    已知十进制求二进制

    求正整数的二进制

    除2取余,直至商为零,余数倒叙排序。

    求负整数的二进制

    先求与该负数相对应的正整数的二进制,然后将所有位取反,末尾加1,不够位数时,左边补1

    求零的二进制

    全是0

    已知二进制求十进制

    如果首位是0,则表明是正整数,按普通方法来求

    如果首位是1,则表明是负整数,将所有位取反,末尾加1,所得数字就是该负数的绝对值。

    1 按位取反~

    0变1

    1变0

    之前左边省略的0,变1

    2 左移<<

    i<<1 表示把 i 的所有二进制位左移一位

    左移 n 位相当于乘以 2 的 n 次方

    面试题:

     1 #include<stdio.h>
     2 
     3 main()
     4 {
     5     int i;
     6 
     7     i = i * 8;
     8     i = i << 3;
     9 
    10     /* 请问上述两个语句,哪个语句执行的速度快 */
    11 }

    3 右移>>

    右端(低位)移出的二进制数舍弃,左端(高位)移入的二进制分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补1.

    4 按位与&

    类似逻辑与&&,相当于把每一位进行逻辑与&&

    &i 取i的地址

    i&j i按位与j

    1&1==1

    1&0==0

    0&1==0

    0&0==0

    5 按位异或^

    相同为0,不同为1

    1^0==1

    0^1==1

    1^1==0

    0^0==0

    6 按位或|

    类似逻辑或||,相当于把每一位进行逻辑或||

    1|1==1

    1|0==1

    0|1==1

    0|0==0

    位运算的现实意义:

    通过位运算符,我们可以对数据的操作精确到每一位

  • 相关阅读:
    MyDAL
    MyDAL
    MyDAL
    MyDAL
    MyDAL
    MyDAL
    MyDAL
    MyDAL
    MyDAL
    ThinkPad 安装 Ubuntu 18.10 系统 -- 高分屏各项配置与Nvdia独显驱动
  • 原文地址:https://www.cnblogs.com/denggelin/p/5450807.html
Copyright © 2011-2022 走看看