了解原码、反码、补码的相关知识和位运算符的使用

举报
周小末天天开心 发表于 2022/11/18 10:49:26 2022/11/18
【摘要】 了解原码、反码、补码的相关知识和位运算符的使用

前言

        了解原码、反码、补码的相关知识和位运算符的使用。

一、原码、反码、补码

(1)原码

1)原码就是将一个整数转换成它的二进制形式。

2)原码的第一位表示的是符号位,正数为 0,负数为 1.

如: int a = 4;其原码为:00000000  00000000  00000000  00000100

        int b = -12; 其原码为:10000000  00000000  00000000  00001100

3)正数的原码、补码、反码一样。

(2)反码

1)负数的反码为 其原码符号位不变,其他的数值为取反。0 => 1 , 1 => 0

2)例如:int c = -15;

其原码为:10000000  00000000  00000000  00001111

其反码为原码符号位不变,其余位置取反:11111111  11111111  11111111  11110000

3)正数的原码、补码、反码一样。

(3)补码

1)负数的补码为 其反码+1。

2)例如:int d = -9

其原码为:10000000  00000000  00000000  00001001

其反码为:11111111  11111111  11111111  11110110

其补码为:11111111  11111111  11111111  11110111

3)正数的原码、补码、反码一样。

(4)细节

1)计算机在运算的时候,都是以补码的形式运算的。

2)0的反码和补码都是0.

3)当我们看运行结果时,要看它的原码。

二、位运算

(1)位运算符分类

        位运算符总共分为七类,都包括:& 、| 、^ 、~ 、>> 、<< 、>>>

(2)位运算符作用

1)按位与&:符号两边的运算结果全为1结果为1,否则为0。

2)按位或|:符号两边的运算结果有一个为1结果就为1,否则为0。

3)按位异或^:符号两边的运算结果一个为1一个为0结果就为1,否则为0。

4)按位取反~:符号两边的运算结果取反,1 => 0 , 0 => 1。

5)算数右移>>:低位溢出,符号位不改变,并且用符号位补溢出的高位。

6)算数左移>>:符号位不变,低位补零。

7)无符号右移(逻辑右移):低位溢出,高位补0。

(3)位运算符演示

10 & 2 = 1; 
0 & 100 = 0;
 
1 | 0 = 1;
0 | 0 = 0;
 
20 ^ 0 = 1;
23 ^ 11 = 0;
 
~-3 = 0;
~0 = 1;
 
int a=1>>2; //1 => 00000001 => 00000000
int c=1<<2; //1 => 00000001 => 00000100
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。