位运算符与其他
2021-03-06 23:41
866 查看
0x00 前言
----万般皆苦,唯有自渡;人生苦短,我亦朝阳
0x01 机器数--二进制数
机器数 | 数字在计算机中的二进制表示形式,且有对应的符号位 |
符号位 | 二进制数的最高位(第一位),且正数为0,负数为1。如00000110为6,10000110为-6 |
机器的字长 |
机器内部设备一次能表示的二进制位数。 8bit=1Byte,即,字节的整数倍为字长,如8位、16位 |
真值 |
带符号位的机器数对应的真正数值。 如二进制数10000110的真值为为二进制的-0000110,或十进制的-6,而不是134 |
0x02 原码,反码,补码等
概念 | 使用 | |
原码 | 符号位加上真值的绝对值 | 如-6的原码为10000110,8的原码为00001000 |
反码 |
正数的反码为其本身,即与原码相同; 负数的反码为原码的基础上, 符号位不变,其余各位取反(0和1互变) |
如-6的反码为11111001;6的反码还是00000110 |
补码 |
正数的补码为其本身,即与原码相同; 负数的补码为其反码+1 数0的补码表示是唯一,即00000000 |
如-6的补码为11111010;8的补码还是00001000 |
总结 |
正数的原码、反码、补码相同;负数的如上 |
|
负数的补码转十进制 |
1、各位取反;2、转十进制;3、加符号,再-1 |
如11111010:1、00000101; 2、5; 3、-6 |
0x03 位运算符
表达式/声明 | 二进制数 | 备注 |
int a=6; | 00000110 | 定义整型变量 |
int b=11; | 00001011 | |
a&b | 00000010 | 按位与。有0为0 |
a|b | 00001111 | 按位或。有1为1 |
a^b | 00001101 | 按位异或。不同为1 |
~a | 11111001 | 取反。0和1互变 |
a>>2 | 00000001 |
a的二进制数都向右移2位。低位舍弃,高位: a为正数时,最高位补0 a为负数时,最高位看编译系统是补0/1 |
a<<2 | 00011000 | a的二进制数都向左移2位。高位丢弃,低位补0 |
0x02 编外
----内容为本人查阅资料理解,如有侵权,请及时联系本人
相关文章推荐
- Java 运算符: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 其他运算符
- 今天学习时突然联想到这样一个有趣但无用的问题:利用C语言(不能是其他语言)求两个整数的较大/小值-----要求不用if、三目?、switch、循环、数组、加减乘除求余、位运算符以及任何库函数
- word仿宋GB2312被其他字体替换的解决方案
- Qt学习笔记(其他控件)
- 在JAVA程序中调用其他程序
- 解决Three20与其他framework冲突的办法
- Oracle 触发器 行触发,对同行其他字段进行修改。
- 1-2 03:其他基本数据类型存储空间大小
- [详细分析]实现一个8bit数据(unsigned char)的指定位的置0或者置1操作,并保持其他位不变
- Java 位运算符
- C#中使用Win32和其他库
- imageView(或其他类似控件)一定要先手动释放掉图片资源
- 原始XML文件如何引用Android项目中的其他资源
- bootstrap 中 input输入框与其他样式的组合
- iOS编程基础-Swift(五)-流程控制与其他
- 日志服务数据加工最佳实践: 从其他logstore拉取数据做富化
- Linux 入门常用命令 — 其他命令
- 该文档包含引用其他文件袋的链接。确是要用链接文件中的数据更新该文档吗
- centos 6.4 修改ssh默认端口22为其他端口详尽安全教程(包含SELinux,iptables设置)
- iOS中Block介绍 内存管理与其他特性