数值表示与位运算一点笔记

原创 2005年05月07日 00:38:00

 

1,  存储器由若干“字节”byte单元组成。而每个字节都有一个地址,当然这个地址是物理排序的,怎么说呢?好比就是从0开始刻出的标尺一样的刻度位置,所以地址是物理固定的;我们说的改变地址,其实改变的不是地址,而是地址里面的内容。字节则是由若干个二进制位bit组成的。而若干个字节组成一个存储单元(比如4个字节可以存储Int整数的单元),叫做“字”(word)。在每一个存储一个数据或者一个指令(所谓的32位,64位指令系统)。另外,一个字节由8个二进制位组成,最右边的一位是“最低位”,最左边的一位是“最高位”,每个位上的值是0或者1。比如ox10000001表现了这个高位序列。

2,  表示数值的方法:原码,反码和补码。

1)  原码。最高位是符号位(0表示正,1表示负),其他各位表示数值本身的绝对值。注意小谭说,+0和-0表示的不是同一个0,在内存中有两个表示,所以0不适合计算机的运算。有个问题,在我们编程中经常用到比较(如:value == 0 )这样的表达式,经过实践的检验是正确可行的,我测试了一下,正0和负0都表示成了同一个值。怎么证明小谭的说法,请大家指点。

2)  反码。若一个值是正,其反码和原码是一样的;若为负,则符号位为1,其余各位是对原码取反。

3)  补码。原码和反码不适合计算机内运算,因为要单独处理其符号。补码规则:对整数,原码、反码、补码相同;对负数,最高位为1,其余各位取原码的反,然后对整个数加1

4)  总结:这些数值表示,在我编程过程中从来没有考虑和体验过,一定是我太菜的缘故。

3,  位运算。运算量只能是整数或者字符型,不能为实数等其他类型。

1)  & 按位与:两个相应位都位1,则为1,否则为0。特殊用途

l         清零。找一个数满足原来的数中为1的位在新数中对应0条件即可。

l         取一个数的指定位。比如高位或者低位,将所取的位对应1,其他位对应0

2)   |按位或:两个相应位只要有一个为1,该位结果为1。作用主要是对一个数据某些位定位为1

3)   ^ 按位异或:参加运算的两个相应位同号,则为0;异号则为1。注意

l         特定位翻转。构造的数在特定位上取1,其余位取0

l         0^,则是保留原值。

l         交换两个值,不用临时变量。a = a ^b; b=b^a;a=a^b

4)   ~ 取反:对二进制按位取反,注意其优先级特别高

5)   <<  左移:左移一位相当于该数乘以2,两位乘以4,改规则只适合在左翼中溢出的被舍弃的高位不含1的情况。

6)   >> 右移:就好理解了,但是要注意符号位问题。

l         无符号数,右移在左边高位移入0

l         有符号数,整数的话移入0,负数的话,移入01取决于所用的计算机系统。即移入0为“逻辑右移”,移入1为“算术右移”。

各种数值计算机内存的存储规则、补码计算、内存数据位扩展和具体意义、关于位运算

//关于数据在计算机内存中的存储:无论什么数值,也无论这个数值是用什么进制表示,计算机存储的都是这个数值的补码。     //如果表示这个数值的时候,前面有+号或者没有加符号,则认为是正数,这个时候...
  • gukesdo
  • gukesdo
  • 2012年04月09日 20:51
  • 2336

mysql 学习记录(四)--数值计算、逻辑判断、范围选择、位运算

数值计算、逻辑判断、范围选择、位运算
  • bwshqh
  • bwshqh
  • 2015年10月03日 14:52
  • 869

C语言中位运算的一点小小总结

大一的时候,开始接触C语言,当学到位运算的时候感觉这个东西真没什么用,因为在编码的时候很少用到这个东西。现在回过头来看,那时真是知识浅薄,见识短浅! 位运算,也叫布尔代数。在计算机中有专门的汇编指令。...

对整数和浮点数存储,little-endian和big-endian字节顺序,以及位运算的一点回顾

对问题的一些理解 1.位运算及其相关运算 位运算 &,|,^,~,>,+,! 用 异或^ 可以交换两个变量,不需要中间变量 a = a ^ b;   // a = 0000 1111 b =...
  • hoppboy
  • hoppboy
  • 2012年03月04日 15:43
  • 2149

整数的二进制表示与位运算

  • 2017年07月22日 10:51
  • 120KB
  • 下载

c 语言笔记.函数和位运算

C语言函数 定义: 返回值类型 +函数名(形式参数类型 参数名,...........){                    程序代码;                    return...

学习笔记---位运算

位运算 位运算符 优先级 运算符 功能 结合方式 2 ~ 按位取反 由左向右 5 > 左移   右移 由左向右 8 ...

位运算做个笔记(嵌入式用得多)

前面介绍的各种运算都是以字节作为最基本位进行的。   但在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能,   这使得C语言也能像汇编语言一样用来编写系统程序。 一、...
  • FAR0001
  • FAR0001
  • 2011年09月02日 10:33
  • 223

JAVA学习笔记-位运算

今儿看到了JAVA的位运算,准备好好复习一下,查考了一些资料,挑出了一些容易理解的...

C语言学习笔记:16_位运算

/* * 16_位运算.c * * Created on: 2015年7月6日 * Author: zhong */ #include #include /* 位运算: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数值表示与位运算一点笔记
举报原因:
原因补充:

(最多只允许输入30个字)