首页 > 其他分享 >位运算

位运算

时间:2022-11-29 16:23:05浏览次数:34  
标签:11111111 反码 运算 结果 00000000 补码 原码

  • PHP 位运算

     

    位运算:

    一、先求出二进制:
    -3原码: 10000000 00000000 00000000 00000011  
    -3反码: 11111111 11111111 11111111 11111100 //取反,但符号位不变。
    -3补码: 11111111 11111111 11111111 11111101 //反码加1

    注意:
    1、正数的原码、反码、补码都是一样的。
    2、计算机运算是以补码形式进行的,故计算时先统一转成补码,计算后(补码)逆转成原码。

    二、按位与& :除去符号位,同1为1。
    例:-3&2
    -3 补码:11111111 11111111 11111111 11111101
     2 补码:00000000 00000000 00000000 00000010     
    结果补码:00000000 00000000 00000000 00000000//最高位也参与运算,因为一正一负,总得有个了断吧
         结果:0,由于正数三码统一,故处已是结果,补码即原码。

    例:-3&-6
    -3 补码:11111111 11111111 11111111 11111101
    -6 补码:11111111 11111111 11111111 11111010
    结果补码:11111111 11111111 11111111 11111000
    结果反码:11111111 11111111 11111111 11110111//补码减1
    结果原码:10000000 00000000 00000000 00001000 //反码再求反之后,-8

    总结:
    1、有正为正。
    2、在结果为负,并且左边全是1,右边全是0,则结果从最后一个 1 取到最后,即:11111000 => 1000 => 8 => -8
    2、当一个负数是2^n时,它的补码:补码等于原码有效数字所位,前补1,后补0。
    -8 => 1 <1> 000 => 11000 //当然,前面还可以补许多1,但没意义,只要位数够运算就行
    -2 => 1 <1> 00 =>  11100

    11000
    11100
    11000//结果补码,结果便是:1000 => 8 取负,-8

    三、按位或| :除去符号位,有1为1
    例:-3|-6
    -3 补码:11111101
    -6 补码:11111010
    结果补码:11111111
    结果反码:11111110//补码减1
    结果原码:00000001 //反码再求反,-1

    总结:
    1、有负为负。

    四、按位异或^ :相异为1,相同为0
    例:-3^-6
    -3 补码:11111101
    -6 补码:11111010
    结果补码:00000111//已然为正,故为7

    总结:同号为正,异号为负。

    五、按位取反~ :0、1互换
    例:~-3
    -3 补码:11111101
    结果补码:00000010//已然为正,故为2

    总结:正负相换。

    六、按位右移>> : 排除符号位,二进制数整体向右移动。

    7 >> 2 => 0111 => 0001 = 1 // 这里向右移动了2位,最低位的两个1被抹去。

    七、按位左移<< : 与上同理。
    7 << 2 => 0111 => 011100 = 28 // 这里向右移动了2位,最低位的两个1被抹去。
    总结:右移两位等于除了2的二次方,7/4 = 1 在整数除法中则看成是被舍掉了小数部分。左移就是剩以2的二次方,PHP没有无符号右移运算符>>>

标签:11111111,反码,运算,结果,00000000,补码,原码
From: https://www.cnblogs.com/euge/p/16935702.html

相关文章

  • C++数据结构和算法:位运算、字符串
    --------------------------------位运算---------------------------------Q1.用位运算交换两个值前提:要交换的两个值是独立内存voidSwap(int&a,int&b){a......
  • 1758. 生成交替二进制字符串的最少操作数 ---- 位运算、模拟
    给你一个仅由字符'0'和'1'组成的字符串s。一步操作中,你可以将任一'0'变成'1',或者将'1'变成'0'。交替字符串定义为:如果字符串中不存在相邻两个字符相等的情......
  • PYTHON 运算符
    1.1运算符运算符也称操作符,主要有算术,关系,逻辑,位等。1.2算术运算符用于整数,浮点数的计算。运算符描述实例+加-两个对象相加a+b-减-得到负数或......
  • 线性变换的运算
    在这一节,我们来介绍线性变换的运算及其简单性质乘法  设\(\mathscr{A,B}\)是线性空间V上的两个线性变换,定义它们的乘积\(\mathscr{AB}\)为      \((\mathscr......
  • Java基础运算符
    JAVA基础运算符算数运算符:+,-,*,/,%,++,--//二元运算符//Ctrl+D赋值当前行到下一行inta=10;intb=20;intc=25;......
  • C语言实现用位移运算符进行加减乘…
    最近,在百度知道上回答问题,然后看见有的人问如何用位移运算符去进行加减乘除运算,于是巩固今天就在这总结一下。加法运算:将一个整数用二进制表示,其加法运算就是:相异(^)时,......
  • C# Math 中的常用的数学运算
    〇、动态库System.Math.dll引入动态库usingSystem.Math;  Math为通用数学函数、对数函数、三角函数等提供常数和静态方法,使用起来非常方便,下边简单列一下常用的几......
  • 基本数据类型之间的运算规则
    一、自动类型提升 byte(1)short(2)int(4)long(8)floatdouble当容量小的数据类型的变量与容量大的数据类型的变量做运算时,要用容量大的数据类型来接------结果自......
  • python算数运算符
    Python支持的所有基本算术运算符; 加法运算符:示例:1a=102b=963sum1=a+b45x=3.146y=5.347sum2=x+y89print("sum1=%d,sum2=%.2f"%......
  • 四则运算
    【例3-5】求解简单的四则运算表达式。输入一个形式如“操作数运算符操作数”的四则运算表达式,输出运算结果,要求对除数为0的情况做特别处理。#include<stdio.h>intmain(vo......