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

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

 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<stdlib.h> main()
{
unsigned int num = -; printf("%d,%u\n", num, num); system("pause");
}

输出结果:

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

乱码

 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<stdlib.h> main()
{
printf("%d\n", 10.3); printf("%f\n", ); printf("%d\n", (int)10.3); printf("%f\n", (float)); system("pause");
};

原码

也叫 符号-绝对值码

最高位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 次方

面试题:

 #include<stdio.h>

 main()
{
int i; i = i * ;
i = i << ; /* 请问上述两个语句,哪个语句执行的速度快 */
}

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

位运算的现实意义:

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

全国计算机等级考试二级教程-C语言程序设计_第15章_位运算的更多相关文章

  1. 全国计算机等级考试二级教程-C语言程序设计_第4章_选择结构

    switch什么时候用break,什么时候不用break 调用break:一次执行一个分支,输入一个数据,对应一个级别 不调用break:连续执行多个分支 if...else 可以处理任何情况,大于小 ...

  2. 全国计算机等级考试二级教程-C语言程序设计_第8章_地址和指针

    面试: unsigned int *p1 = &num; int *p2 = &num; #define _CRT_SECURE_NO_WARNINGS #include<std ...

  3. 全国计算机等级考试二级教程-C语言程序设计_第9章_数组

    四维数组,可用于航天卫星,三维+时间 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> ...

  4. 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型

    函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...

  5. 全国计算机等级考试二级教程-C语言程序设计_第10章_字符串

    字符型指针数组 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //参数中,int a ...

  6. 全国计算机等级考试二级教程-C语言程序设计_第5章_循环结构

    for循环结构的嵌套 外层循环每循环一次,内层循环会完整循环一次. 外层循环是竖. 内层循环是横. for, do...while, while的选择: 如果有固定次数,如阶乘! ,判断素数,用 fo ...

  7. 全国计算机等级考试二级教程-C语言程序设计_第3章_顺序结构

    1输入两个整数给变量x和y:然后输出x和y:在交换x和y中的值后,在输出x和y. #include <stdio.h> main() { int x, y, t; printf(" ...

  8. 全国计算机等级考试二级教程-C语言程序设计_第2章_C程序设计的初步知识

    正负号与被除数一致. 3 % (-5) == 3 (-3) % 5 == -3 不用求余运算符,求出余数. int x, y; 答:x - x / y * y; const int i = 10; c ...

  9. 全国计算机等级考试二级教程-C语言程序设计_第7章_函数

    函数执行,从右到左执行 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> main() ...

随机推荐

  1. SpringMVC之数据绑定(转)

    到目前为止,请求已经能交给我们的处理器进行处理了,接下来的事情是要进行收集数据啦,接下来我们看看我们能从请求中收集到哪些数据, 1.@RequestParam绑定单个请求参数值: 2.@PathVar ...

  2. java中内存结构及堆栈详解

    一. java内存结构 1. Heap(堆):实例分配的地方,通过-Xms与-Xmx来设置 2. MethodArea(方法区域):类的信息及静态变量. 对应是Permanet Generation, ...

  3. vmware重装系统后虚拟机实例文件*.vmdk重用

    如题:vmware重装系统后自定义的:虚拟机名称*.vmdk文件重用. 一.问题描述 系统磁盘坏道,装不上系统直接换了硬盘,但是新装的Vmware不能够通过open方式打开“自定义*.vmdk”(这个 ...

  4. 充分利用CPU高速缓存,提高程序效率(原理篇)

    提高程序效率应该充分利用CPU的高速缓存.要想编写出对CPU缓存友好的程序就得先明白CPU高速缓存的运行机制. i5-2400S: 1.有三级缓存分别为 32k(数据.指令缓存分开,分为32k),25 ...

  5. CodeForces 132C Logo Turtle (记忆化搜索)

    Description A lot of people associate Logo programming language with turtle graphics. In this case t ...

  6. OA 权限控制

    对于加入删除 初始化password等操作的权限 控制 第一种方法就是在每一个超链接前加 推断 如 <s:if test="#session.user.hasPrivilegeByNa ...

  7. 绿色mysql启动脚本

    启动脚本如下:./mysqld_safe --defaults-file=/export/servers/mysql-5.5.38/my.cnf --ledir=/export/servers/mys ...

  8. css系列教程--css文件的创建

    css文件的创建:1.外部样式表:<link rel="stylesheet" type="text/css" href="mystyle.cs ...

  9. HTTP概念进阶

    1.什么是回调? 在Java中,就是类A调用类B中的某个方法b,然后类B又在某个时候反过来调用类A中的某个方法a,对于A来说,这个a方法便叫做回调方法 pubilc interface CallBac ...

  10. 记一次dedeCMS网站搭建全过程

    Step 1 使用阿里云Windows Server 2012服务器 { 使用远程桌面进行操作,ip admin pwd登录 } Step 2 下载安装phpStudy包 { 下载安装,直接安装到C盘 ...