郝斌老师C语言学习笔记----补码和位运算符
来源:互联网 发布:jquery.rotate.js 编辑:程序博客网 时间:2024/05/14 16:58
补码和位运算符
1. 补码
(1)已知十进制求二进制
**求正整数的二进制** 除2取余,直至商为零,余数倒叙排序**求负数的二进制** 先求与该负数相对应的正整数的二进制代码,然后将所有位取反,末尾加1,不够位数时左边补1**求零的二进制** 全是零
(2)已知二进制求十进制
如果首位是0,则表明是正整数,按普通方法求如果首位是1,则表明是负整数 将所有位取反,再加一,所得数字就是该负数的绝对值如果全是零,则对应的十进制也是零
Q : 一个int型的变量所能够存储的数据范围是多大?
int占4个字节,32位
int所能存储的最大值二进制表示:
0111 1111 1111 1111 1111 1111 1111 1111
用十六进制表示 : 0x7FFFFFFF
int所能存储的最小值二进制表示:
1000 0000 0000 0000 0000 0000 0000 0000
用十六进制表示 0x80000000
2. 位运算符
(1)& —– 按位与
&& 逻辑与 是逻辑运算符(返回bool值)& 位与和逻辑与完全不一样, &是按位比较1&1 = 11&0 = 00&0 = 0如 15 & 0 和 10 & 15 比较如下1111 & 0000 = 00001010 & 1111 = 1010
(2) | —– 按位或 (和与规则相反)
(3) ~ —-按位取反
~i就是把i变量所有二进制位取反
(4) ^ —- 按位异或
相同位零 不同为1
(5)<< —- 按位左移
i<<3 表示把i的所有二进制位左移3位,右边补零
左移n位相当于乘以2的n次方,前提是数据不能丢失
(6)>> —- 按位右移
i>>3 表示把i的所有二进制位右移3位,左边一般是0,当然也可能补1(算数左移和逻辑左移)
右移相当于除以2的n次方
补充:
原码
- 也叫 符号-绝对值码
- 原码 最高位0表示正 1表示负,其余二进制位是该数字的绝对值的二进制位
- 原码存在加减乘除四种运算,且运算相对复杂,增加CPU的复杂度,零的表示不唯一
阅读全文
0 0
- 郝斌老师C语言学习笔记----补码和位运算符
- 郝斌老师C语言学习笔记----指针和数组
- 【C语言学习笔记】进制和位运算
- C语言学习笔记11--位运算
- C语言学习笔记 位运算
- c 语言笔记.函数和位运算
- 黑马程序员----C 语言学习笔记之位运算符
- 学习C语言位运算的概念(原码,反码,补码)
- c语言学习笔记-控制流-郝斌老师讲解
- C语言学习笔记-数组-郝斌老师讲解
- C语言学习笔记-指针-郝斌老师讲解
- 郝斌老师C语言学习笔记----基本类型指针
- 郝斌老师c语言学习笔记----动态内存分配
- c和java中的位运算对比---补码运算
- C语言基础-进制、原反补码、位运算
- C语言基础-进制、原反补码、位运算
- C语言之位运算/原码/反码/补码
- c语言的原码补码反码-位运算
- bzoj。 1007: [HNOI2008]水平可见直线
- WebView API指南
- docker:一次执行,多条命令
- JAVA 多线程的简单使用
- 骰子类游戏
- 郝斌老师C语言学习笔记----补码和位运算符
- java多线程学习(三)---线程范围内数据共享
- PAT乙级1031 查验身份证
- VMware14黑屏问题
- Codeforces 484B Maximum Value——思维
- ACM训练半周总结—11月3日
- IDEA快捷键
- 小学奥数题C语言解法
- 常用函数