精华内容
下载资源
问答
  • 2020-02-06 10:16:15

    小提示:在c语言中,return 0 代表程序正常退出,return 1代表程序异常退出!

    左移一位是0001 0000 0110,最高位不能去掉的,仔细想一下,原理很简单的,就比如一个十进制的数,例如2,左移一位,后面补0,就是20,,相当于乘以10,二进制的左移相当于乘以2,右移相当于除以2

    u-boot里面,所有的进制都是十六制的,所以不需要加0x.

    “SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件

    更多相关内容
  • 简单理解二进制左移和右移(通俗易懂)

    万次阅读 多人点赞 2020-08-11 09:48:02
    简单理解:二进制左移就是后面加几个0,前面去掉几 举例说明: 39左移两 右移(>>) 符号表示: << 简单理解:和左移同理,先计算二进制,右移几就是在二进制的前面加几(正数加0,负数...

    左移(<<)

    • 符号表示 : <<

    简单理解:二进制左移几位就是后面加几个0,前面去掉几位

    举例说明:

    39左移两位
    在这里插入图片描述

    右移(>>)

    • 符号表示: <<

    简单理解:和左移同理,先计算二进制,右移几位就是在二进制的前面加几位(正数加0,负数加1),后面去掉几位

    举例说明:

    39右移两位

    在这里插入图片描述

    左移一位相当于乘2,右移一位相当于除2(不完全等同),比除法快

    展开全文
  • 我们都知道在计算机中所有的信息最终都是以二进制0和1来表示,而有些算法是通过操作bit来进行运算的,这就需要我们了解Python中如何去表示二进制,又如何是进行运算的。 二进制的表示 0b111 类型是整型,...

    目录

    二进制的表示

    二进制的位操作

    应用: 剑指offer15.统计二进制中1的个数(多种方法,位右移操作、与操作等)


    转自:https://www.jianshu.com/p/3a31065a8e58

    红色为自己添加

    我们都知道在计算机中所有的信息最终都是以二进制的0和1来表示,而有些算法是通过操作bit位来进行运算的,这就需要我们了解Python中如何去表示二进制,又如何是进行位运算的。

    二进制的表示

    0b111 类型是整型,一般为二进制32整型或者16整型,常见的是二进制8位整型

    bin(n)可以将一个十进制或者其他进制的整型转化成二进制,返回的类型是字符串表示的二进制整型

    n = 0b101
    print(type(n))
    print(type(bin(n)))

    <class 'int'>
    <class 'str'>

    首先在Python中可以通过以"0b"或者"-0b"开头的字符串来表示二进制,如下所示

    print 0b101 # 输出5
    print 0b10  # 输出2
    print 0b111 # 输出7
    print -0b101 # 输出-5
    

    由此可知我们用二进制表示的数字在打印之后会变成我们更为熟悉的十进制数,更容易被人理解。
    当我们需要看十进制数字的二进制表示时,可以使用bin函数

    bin(5)  # 输出0b101
    

    二进制的位操作

    首先一点需要明确的是所有的运算(包括位操作)在计算机内部都是通过补码形式来进行运算的,关于补码可以参考文章原码,反码和补码,计算机内部运算示意图如下:


    此部分转自:https://blog.csdn.net/weixin_39671935/article/details/113980497

    先简单说一些概念:

    原码:从符号位开始表示,1是正数,0是负数

    反码:正数的原码反码补码都是一样的。

    负数的反码是在其原码的基础上, 符号位不变,其余各个位取反

    比如-5转成二进制原码1101,在算出反码1010

    补码:正数的原码反码补码都是一样的。

    负数的补码是反码+1


     

     

     

    在Python中提供了如下二进制的位操作:

    >>  #右移
    <<  #左移
    |   #位或 
    &   #位与
    ^   #位异或
    ~   #非
    

    下面我们分别来看下:

    左移

    0b11 << 2   #输出为12, 即0b1100
    5 << 2      #输出为20, 即0b10100
    -2 << 2     #输出为-8
    5 << 64     #输出为92233720368547758080L
    
    1. 以0b11为例,0b11的补码就是0b11,所以左移就是将所有的0和1的位置进行左移,移位之后将空位补0。
    2. 负数的左移相对来说就比较复杂,以-2 << 2为例,-2的原码是10000000000000000000000000000010(32位系统),其补码为11111111111111111111111111111110,左移之后变为11111111111111111111111111111000,再转化为原码即10000000000000000000000000001000,也就是-8,也就是-2*(2**2)=-8
    3. 左移超过32位或者64位(根据系统的不同)自动转化为long类型。
    4. 左移操作相当于乘以2**n,以5 << 3为例,相当于5(2*3),结果为40。

    右移

    0b11 >> 1   #输出为1, 即0b1
    5 >> 1      #输出为2,即0b10
    -8 >> 3     #输出为-1     
    
    1. 在Python中如果符号位为0,则右移后高位补0,如果符号位为1,则高位补1;
    2. 同样需要先转化为补码再进行计算,以-8 >> 3为例,-8的原码为10...01000,相应的补码为11...11000,右移后变为1...1,相应的原码为10...01,即-1。
    3. 右移操作相当于除以2**n,8 >> 3相当于8/(2**3)=1

    0b110 | 0b101   #输出7,即0b111
    -0b001 | 0b101  #输出-1
    

    同样是转化为补码后再进行或运算, 只要有一位有1就为1。
    所以或运算常常用于mask技术中的打开开关,即针对某一位把其置为1
    比如将某个数字的第三位置为1,我们可以将mask设置为0b100,然后再或运算

    mask = 0b100
    0b110000 | mask  #turn on bit 3
    

    0b110 & 0b011   #输出2,即0b010
    

     与运算常常用于mask技术的关闭开关,即针对某一位把其置为0

    mask = 0b10
    0b111111 & mask  #turn off bit 2
    

    异或

    0b111 ^ 0b111   #输出0
    0b100 ^ 0b111   #输出3
    

    异或常用于将所有的位反转

    0b1010 ^ 0b1111  #输出5,即0b0101
    

     非

    ~0b101  #输出2,即0b010
    ~-3     #输出2
    

     非运算就是把0变1,1变0,唯一需要注意的是取非时符号位也会变换,比如-3,原码是10...011,补码是11...101,取非后变为00...010,由于符号位为0,所以对应的原码即为其本身,即2。

     

    二进制的减法:

    设n=0b1010

    则n-1=0b1001

    减法原则和十进制的减法一致,只是向前借一的时候,一表示的不是10而是2,加法也是一样,满2进1

    0b1010
    -    1
         =
    0b1001

     

    应用: 剑指offer15.统计二进制中1的个数(多种方法,位右移操作、与操作等)

    请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。

     

    示例 1:

    输入:00000000000000000000000000001011
    输出:3
    解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。

    示例 2:

    输入:00000000000000000000000010000000
    输出:1
    解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。

    代码实现:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2021/5/17 17:59
    # @Author  : @linlianqin
    # @Site    : 
    # @File    : 剑指 Offer 15. 二进制中1的个数.py
    # @Software: PyCharm
    # @description:
    '''
    请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。
    例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。
    '''
    
    '''
    思路:将n变成二进制形式,然后计数'1'的个数
    '''
    class Solution:
    	def hammingWeight(self, n: int) -> int:
    		return bin(n).count('1')
    
    	# 将其转化为列表后再诸位变成整数进行相加
    	def hammingWeight1(self,n):
    		return sum(map(int,bin(n)[2:]))
    
    
    n = 0b101
    print(Solution().hammingWeight(n))
    print(Solution().hammingWeight1(n))
    
    # 优化思路,充分利用二进制的位操作
    def hammingWeight2(n):
    	# 这里诸位将二进制的数字和1进行运算,若结果为1,则说明当前位置值为1,否则为0
    	count = 0
    	while n: # 当n不全为0时
    		count += n&1 # 这里是进行位与操作,这里的与操作默认是从高位开始的,因此需要进行右移
    		n >>= 1
    	return count
    print(hammingWeight2(n))
    
    #优化,上述方法进行的是诸位运算,还可以继续优化,巧妙的利用n&n-1,二进制的减法和十进制一样,因此能够检测出最低位的1,即n-1
    # n-1会使得最低位的1及后面的0发生变换,1-0,0-1,然后利用n&n-1来更新n,这样来达到计数效果
    def hammingWeight3(n):
    	count = 0
    	while n:
    		count += 1
    		n &= n-1
    	return count
    print(hammingWeight3(n))
    print(type(n))
    print(type(bin(n)))

    2
    2
    2
    2
    <class 'int'>
    <class 'str'>

    展开全文
  • 程序员二进制计算器 v1.36

    热门讨论 2014-07-16 16:21:43
    支持与、或、非、异或、移位(循环、逻辑、算术),直接读写二进制位,指定位段读、写、置1、清0、反转。 二进制数据表达方式多样,数据可以K、M、G等单位为后缀。 支持类C语言库函数调用。 结果可以各种进制、各种...
  • 二进制中原码补码与左移右移

    二进制中原码反码补码与左移右移

    原反补码

    在此之前要了解二进制中的正数和负数以及有符号数和无符号数

    在二进制码中,采用最高位是符号位的方法来区分正负数,正数的符号位为0、负数的符号位为1此类即为有符号数
    无符号数的表数范围是非负数。全部二进制均代表数值(所有位都用于表示数的大小),没有符号位。即第一个"0"或"1"不表示正负

    (+10110)B的原码=(010110)B
    (-10110)B的原码=(110110)B
    

    对于正数而言反码和补码一样,负数则是补码=(反码+1)

    (+1110)B的原码=(01110)B 反码=(00001)B 补码=(00001)B
    (-1110)B的原码=(11110)B 反码=(10001)B 补码=(10010)B
    

    –3(8位二进制) 写补码和反码符号位不变

    -3=(1000 0011)B原码 (1111 1100)B反码 (1111 1101)B补码
    

    左移右移

    左移是将进制数左移一位 C语言中左移符号:<<

    0xff<<1:(1111 1111)B左移一位(1111 1110)B
    即移多少位在后面补几个0

    右移是将进制数左移一位 C语言中左移符号:>>

    0xff>>1:(1111 1111)B左移一位(0111 1111)B
    即移多少位在前面补几个0

    若利用移位来控制led灯的流水灯程序

    #include<reg52.h> // 头文件
    #include<intrins.h> //移位函数
    #define uchar unsigned char
    #define uint unsigned int
    #define led P0 //宏定义
    uint i; 
    sbit HC138_A=P2^5; //led灯锁存器的选通
    sbit HC138_B=P2^6;
    sbit HC138_C=P2^7;
    
    void delay(uint a) //延时函数
    {
    	while(a--);
    }
    
    void ledrun() //流水灯程序
    {				   
       for(i=0;i<8;i++)
    	{
    		led=~(0x01<<i);
    		delay(50000);
    	}
    }
    
    void main()
    {  
    	P2=0XA0;
    	P0=0X00;
    	P2=0X00;
        HC138_A=0;
    	HC138_B=0;
    	HC138_C=1;
    	P0=0X01;
       while(1)
    	{
     	  ledrun();
    	}
    }
    

    若想用#include<intrins.h> 移位函数来控制小灯则流水灯程序:

    void ledrun()
    {
    	led=_crol_(led,1);
    	delay(5000);
    }
    此函数能直接让移位操作
    

    例:

    led=0xb6=1011 0110B
    led=_crol_(led,1);
    则led=(0110 1101);
    

    右移则同理!

    展开全文
  • 2、二进制

    千次阅读 2021-07-26 08:01:22
    IC是集成电路的简称,集成引脚电路只有0和5V使用二进制可以更好的控制电脑里面的电路位:位(bit,缩写为b)是存储器的最小单位,可以表示一位二进制数.字节:1字节(Byte,缩写为B)由8个位组成,即1Byte=8bit,是...
  • 二进制位运算符

    2021-10-08 11:21:45
    二进制否运算符(not):符号为~,表示对二进制位取反。 异或运算符(xor):符号为^,表示若两个二进制位不相同,则结果为1,否则为0。 左移运算符(left shift):符号为<<,详见下文解释。 右移运...
  • 计算机32浮点数二进制编解码

    千次阅读 2021-07-30 06:20:24
    原文参考:... 小数部分0.5, 二进制是.1,先把他们连起来,从第个1数起取24(后面补0):1100.10000000000000000000这部分是有效数字。(把小数点前后两部分连起来再取掉头前的1,就是...
  • 运算及如何将个十进制数转化为二进制
  • 二进制位到提取每个二进制位到C++中bitset使用 移位运算分为逻辑移位和算术移位。 逻辑移位:移出去的就丢弃,空缺0填充; 算术移位:移出去的丢弃,空缺用“符号来填充”,一般用在右移运算中。 对于...
  • 二进制位运算的基本应用

    千次阅读 2018-07-28 00:07:18
    因为最近在学习的过程中...今天就来系统上地学习一下二进制位运算的操作。 借鉴和简单转载: http://blog.sina.com.cn/s/blog_87b866180101lb55.html https://blog.csdn.net/qq_30076791/article/details/50571194 ...
  • python的二进制运算

    千次阅读 2021-09-19 15:14:14
    了解python的二进制运算,主要由以下几个方面展开: 、bin()函数 将十进制转为二进制,输出的是字符串格式。 >>> bin(11) '0b1011' 其他八进制oct()、十六进制hex()。 二、format 以上的内置函数...
  • 概述Java源码中涉及到大量的二进制操作,...二进制就是只有0、1两个值表示的数,规则是逢二进。整数表示法Java中使用补码来表示负数,具体就是除符号之外,剩余取反加1,符号不变还是1(符号位0-正数,1-负...
  • 计算机基础():二进制详解

    万次阅读 多人点赞 2020-07-19 11:50:44
    二进制 我们都知道,计算机的底层都是使用二进制数据进行数据流传输的,那么为什么会使用二进制表示计算机呢?或者说,什么是二进制数呢?在拓展一步,如何使用二进制进行加减乘除?二进制数如何表示负数呢?本文将...
  • 需要注意一个原数是真值,码是二进制的值,不存在正负号,正数的反码补码与原码一致,负数的反码是在原码的基础上除符号位全部取反,补码是在反码的基础上再最后一位加1,例如:-10 原码是 10001010 反码是 ...
  • 与、或、非、异或、左移、右移、无符号右移
  • 在被计算机的二进制弄得劝退之时,憋自己狠狠的一下计算机二进制知识,就有了此文… … 、深入理解二进制编码 1.什么是二进制编码 前面有文章提到过计算机中的单位关系:...
  • 前言 这天,我正在个技术交流群跟群友交流学(mo)习(yu)经验,忽然看到了这样的个问题。 看到这个问题,我想到了之前的个场景...这个时候有热心的大佬给解释了波,然后我发现又特喵的触及到自己的知识盲区了
  • 超有趣的二进制—高效运算秒懂

    千次阅读 2019-05-20 17:38:23
    我们看10进制的时候,某数乘以10,就是在末尾增加1个0 ,由此我们可以联想到,二进制左移一位(末尾加一个0)相当于乘以2,这个结论普遍存在于所有进位制中:k进制数的末尾加个0,相当于该数乘以k。 我们从图...
  • 对应的文件就要用对应的软件来查看,但是做为开发,要时候是要查看文件的二进制的,比如我们写个音频转换器的时候,发现转换后的音频无法播放,就需要查看此音频文件的二进制,以分析是哪里的数据出了问题,而看...
  • 二进制和十进制的相互转换 十进制转二进制 print(bin(600)) 0b1001011000 print(bin(600).replace(‘0b’,’’)) ‘1001011000’ 以一定的位数转成二进制,比如32 print(’{:032b}’.format(600)) ...
  • 概述 二进制位运算符用于直接对二进制位进行计算,一共有7个... 二进制否运算符(not):符号为~,表示对二进制位取反。 异或运算符(xor):符号为^,表示若两个二进制位不相同,则结果为1,否则为0左移...
  • 计算机二进制小数点表示法

    千次阅读 2021-06-28 09:22:41
    例如:178.125(1)先把浮点数分别把整数部分和小数部分转换成2进制整数部分用除2...即为:1.0110010001 * 2^111,111是二进制,由于左移了7,所以是111把浮点数转换二进制后,这里基本已经可以得出对应3部分的值...
  • 位运算就是把数字用二进制表示之后,对每一位上的0或1的操作。常用的位运算有5种,分别是与、或、异或、左移和右移。其运算规律如下所示: 与(&) 0 & 0 = 0 0 & 1 = 0 ...
  • 总结:二进制

    2020-04-24 18:03:13
    二进制一、 基础认知1. 、比特、字节、字符、字符集、字符编码、比特字节字符、字符集、字符编码概念UnicodeUTF-8 、 基础认知 1. 、比特、字节、字符、字符集、字符编码 、比特 数据(或程序)存储的计算...
  • 本节内容整数仅仅是 unsigned int 类型 (无符号整数类型),以下称为 整数类型,...我们知道个字节等于8个bit,而整数类型占用了4个字节,最大的二进制数为 11111111 = 255 也就是说明,无符号整数类型最大的数.
  • 二进制文件的读取解析 背景 现有需求入下: c的同事将流量数据以二进制形式追加写入文件中,需要java端读取并解析,发送至kafka。 c的数据类型 Specifier Common Equivalent Signing Bits Bytes Minimum ...
  • 进制转换与运算

    2021-01-01 19:56:56
    二进制数:由前缀0b开头,前缀可省略。只有0和1组成 十进制数:由1-9开头,0-9组成 八进制数:由前缀0以及后续的0-7的数字来表示 十六进制数:由前缀0x,后面跟随0-9或大/小写的a-f来表示(a-f依次表示10-15)
  • 二进制的概念及运算

    2021-10-30 17:19:24
    前言 有的朋友觉得写代码做开发应该就是专注于开发出功能,管这些二进制干嘛呢,尤其是做上层开发的朋友,但是当自己出去面试的...这系统中,通常用两个不同的符号0(代表零)和1(代表)来表示。数字电子电路.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,304
精华内容 11,321
关键字:

二进制左移一位后面补0