「C语言」原码反码补码与位运算 – 韩亦乐

 

一、机具号与真值

    机具数(computer number)是数字在计算器切中要害二元系表现整队

机具的接近有两个特性:一是指示牌的将资料数字化。,瞬间,数字的大小人受机具字长的限度局限。

    譬如:十进制记数制6,计算器字长为8位,替换为二元系是00000 110,免得是-6,那是10000110。

嗨的机具接近是000000台110台和10000110台。

因冠军是指示牌位(正位是0)。,比所示数量多的是1。,0分 0分和0分),因而:

        ①8位二元系数的取值长度执意:[1111 1111 , 0111 1111]

(2)机具数的整队值不如现实值。。

为了分别,与具有指示牌位的机具的接近绝对应的现实值是。

            譬如:0000 0001的真值 = +000 0001 = +1,10000001=000=0001=1的真值

二、原码,反码与补码的根本概念

为数,计算器需求运用一种编码办法来希腊字母第12字。原码, 反码,补码是希腊字母第12字在机具切中要害指定数字的编码。

        [+1] = [00000001]原 = [00000001]反 = [00000001]补

        [-1] = [10000001]原 = [11111110]反 = [11111111]补

    1。原始编码

原始编码是指示牌位的无条件的扩大真值Val.,也执意说,指示牌由冠军表现。,其余者的位表现值。

    2。逆码

比所示数量多的反码是自己的。

比所示数量多的的逆码是因为其原始码的。,指示牌位固定性性,其余者位是征服的。

    三。补码        

比所示数量多的补码自己执意比所示数量多的的补码。

比所示数量多的的补码是因为逆码的 1。

    由此可见,比所示数量多的的原码反码补码都是私利,比所示数量多的的反码,补码不克不及形象化它们的价。,在计算其值在前方,需求将其替换为原始编码。

三、为什么运用源编码,补充与补充

用于计算器,添加剂和减法乘法器先前是最根本的运算。,设计尽量复杂,显然,策略算器区别指示牌位将使B变为B。。成果使住满人开端探究指示牌在计算切中要害虚伪插一脚。,只做蜜饯加性办法。

免得十进制记数制减法是由原始编码计算的:1-1=0,出来不严格意义上的的。:

        1 – 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2

当运用倒转码时,成果的真相把正式送入精神病院是严格意义上的的。:

        1 – 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0

反码的成绩是它们在零在上文中。,反码中会有[0000 0000]原=+0和[1000 0000]原=-0两个编码表现0,成果涌现了处理这一成绩的补码[1000 0000]补(8位二元系机具数中,补码也可以表现最小数量-128= = [10000000 ]补码。:

        1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补=[0000 0000]原

四、原码,补码,而且反码

    x mod y合计 x 减去 y 乘上 x与y的商的降谪人间

    一号码的倒数, 它现实上是本人膜的数量。

同留存下的

,这种膜过失人们的二元系统。, 这是可以表达的巅值。

    鉴于0的特别机遇。, 缺乏办法说128, 像这样补充的长度是[-128 ]。, 127]

五、资料溢出物尺寸

六、位举动的举动阐明

    1。安置和

        效能:当对应的两个二元系位均为1时,出来1,用以表示威胁是0。

        举例:9&5 = 1001&0101 = 0001,即 9&5=1

        *整洁:二元系统与1与正常位置做蜜饯,0和0。

    2、点击或或。

        效能:对应的两个二元系位独自地本人时间。,出来1,用以表示威胁是0。

        举例:9|5 = 1001|0101 = 1101,即9乘5=13

    三。位异或异或,EOR」

        效能:对应的两个二元系位与1不完全同样的。,用以表示威胁是0。

        举例:9^5 = 1001^0101 = 1100,即 9^5=12

        *整洁:

完全同样的的圆整数是卓越的的或0。,               例:5^5=0

卓越的的圆整数是卓越的的,或许成果与次无干。,例:5^6^7 = 5^7^6

无论哪个数字和零异或成果记住固定。,        例:x^0 = x

            综上,x^y^x = x^x^y = 0^y = y

    4。反不到位

        效能:逆圆整数的每一位,指示牌也有相反的一面,反之亦然。:0取反为1,1取反为0」

        举例:9=10(因比所示数量多的希腊字母第12字在补充中)

            ~9=~[00001001]原=[11110110]补=[11110101]反=[10001010]原=-10

    5. << 左移(shl)

        体式:圆整数<<左移号码

        举例:x << n

        物质:x*2n

        举动:用N单位将X的二元系位移到左派,高电平解雇,低位0

    6。右移(SHR)

        体式:圆整数右移的号码

        举例:x >> n

        物质:x/2n

        举动:用N单位将X的二元系位向右侧平移,低位解雇,指示牌位固定性

        小心:指示牌位也随它们平移。,向右侧平移不时尚圆整数的正或负,最终的本人指示牌位本应整洁的到原始值。

正指示牌位是0,顶级补码0

负指示牌位1,顶级补码1

七、位举动的复杂使用权

    1。(和位和)平等断定

        上色断定:一%?2?Printf(古怪的\n):PrtTf(偶数\n)

        本人断定:A和1?Printf(古怪的\n):PrtTf(偶数\n)

    2。(^位异或异或,EOR)数值替换

        在第三方变量的扶助下:temp = A;A = b;b = temp;

        缺乏富余的坯,算学法:a = b – 甲;乙 = b – A;A = b + a;

        缺乏富余的坯,位运算:a = a ^ b;b = a ^ A; = a ^ b;

    3.(<< 左移 和 >右移最优化乘法除法效力

        a shl b A的值合计乘以2的B幂。

        a shr b 拿 … 来说,两点搜索。、堆的拔出等。

发表评论

Close Menu