位运算与小数的二进制表示
2016-11-06 21:51
302 查看
C语言提供了六种位运算符号;按位与&,按位或|,按位异或^,左移及右移。
&:参与运算的两个数对应二进制位相与,均为1时,结果位为1,否则为0;参与运算的数以补码的方式出现。
|:参与运算的两个数对应二进制位相或,只要两个二进位有一个为1时,结果位1,参与运算的数以补码的方式出现。
^;参与运算的两个数对应二进制位相异或,当对应的二进位相异时,结果为1,参与运算的数以补码的方式出现。
<<;把符号左边的运算数的各二进制位全部左移若干位,高位丢弃,低位补零;
>>;把符号you边的运算数的各二进制位全部右移若干位,对于有符号数,右移时符号位也移动,注意正数,最高位补零,负数,符号位为1;
小数的二进制表示
整数和小数分别转换.
整数除以2,商继续除以2,得到0为止,将余数逆序排列.
22 / 2 11 余0
11/2 5 余 1
5 /2 2 余 1
2 /2 1 余 0
1 /2 0 余 1
所以22的二进制是10110
小数乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列.
0.8125x2=1.625 取整1,小数部分是0.625
0.625x2=1.25 取整1,小数部分是0.25
0.25x2=0.5 取整0,小数部分是0.5
0.5x2=1.0 取整1,小数部分是0,结束
所以0.8125的二进制是0.1101
十进制22.8125等于二进制10110.1101
&:参与运算的两个数对应二进制位相与,均为1时,结果位为1,否则为0;参与运算的数以补码的方式出现。
|:参与运算的两个数对应二进制位相或,只要两个二进位有一个为1时,结果位1,参与运算的数以补码的方式出现。
^;参与运算的两个数对应二进制位相异或,当对应的二进位相异时,结果为1,参与运算的数以补码的方式出现。
<<;把符号左边的运算数的各二进制位全部左移若干位,高位丢弃,低位补零;
>>;把符号you边的运算数的各二进制位全部右移若干位,对于有符号数,右移时符号位也移动,注意正数,最高位补零,负数,符号位为1;
小数的二进制表示
整数和小数分别转换.
整数除以2,商继续除以2,得到0为止,将余数逆序排列.
22 / 2 11 余0
11/2 5 余 1
5 /2 2 余 1
2 /2 1 余 0
1 /2 0 余 1
所以22的二进制是10110
小数乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列.
0.8125x2=1.625 取整1,小数部分是0.625
0.625x2=1.25 取整1,小数部分是0.25
0.25x2=0.5 取整0,小数部分是0.5
0.5x2=1.0 取整1,小数部分是0,结束
所以0.8125的二进制是0.1101
十进制22.8125等于二进制10110.1101
相关文章推荐
- 关于浮点数的小数部分的二进制表示、精度以及浮点数如何在内存中存放问题
- 如何用二进制表示一个小数
- 小数的二进制表示,阶码
- 【C++专题】数值二进制表示、补码、反码、有符号数、无符号数、小数、有符号数的扩展
- 小数的二进制表示
- 小数的二进制表示
- 位运算--一个整数的二进制表示中1的个数
- 位运算-Number of 1 Bits(求一个十进制数字,它的二进制表示中有多少个 1(bit))
- 5.2---小数的二进制表示(CC150)
- Offer题10 字母表示26进制&二进制中1的个数&位运算相关题目
- 【转】为什么0.1无法被二进制小数精确表示?
- 28.整数的二进制表示中1的个数(运算)
- 为什么0.1无法被二进制小数精确表示?
- leetcode_461. Hamming Distance 计算汉明距离,按位异或运算,计算整数的二进制表示中1的个数 java
- 3358 Period of an Infinite Binary Expansion 给出十进制数p和q,将p/q表示成二进制小数,并求出二进制小数的循环节起始位置和循环节的长度 欧拉函数
- 小数的二进制表示
- 二进制小数及 IEEE 浮点表示
- 判断小数能否用32位二进制精确的表示
- 小数 二进制 的 表示与转换
- 二进制表示小数