精华内容
下载资源
问答
  • 、什么是进位计数制数制也称计数制,是指用组固定的符号统一的规则来表示数值的方法。按进位的原则进行计数的方法,称为进位计数...2、二进制(Binary notation),有2 个基数:0 ~~ 1 ,逢二进;3、八进制(Octa...
    bb59bfdb6a80bb855e0e20ef3d9a1a49.gif

    一、什么是进位计数制

    数制也称计数制,是指用一组固定的符号和统一的规则来表示数值的方法。按进位的原则进行计数的方法,称为进位计数制。比如,在十进位计数制中,是按照“逢十进一”的原则进行计数的。

    常用进位计数制:

    1、十进制(Decimal notation),有10个基数:0 ~~ 9 ,逢十进一;

    2、二进制(Binary notation),有2 个基数:0 ~~ 1 ,逢二进一;

    3、八进制(Octal notation),有8个基数:0 ~~ 7 ,逢八进一;

    4、十六进制数(Hexdecimal notation),有16个基数:0 ~~ 9,A,B,C,D,E,F (A=10,B=11,C=12,D=13,E=14,F=15) ,逢十六进一。

    二、进位计数制的基数与位权

    "基数"和"位权"是进位计数制的两个要素。

    1、基数:

    所谓基数,就是进位计数制的每位数上可能有的数码的个数。例如,十进制数每位上的数码,有"0"、"1"、"3",…,"9"十个数码,所以基数为10。

    2、位权:

    所谓位权,是指一个数值的每一位上的数字的权值的大小。例如十进制数4567从低位到高位的位权分别为100、101、102、103。因为:

    4567=4x103+5x 102+6x 101 +7x100

    3、数的位权表示:

    任何一种数制的数都可以表示成按位权展开的多项式之和。

    比如:十进制数的435.05可表示为:

    435.05=4x102+3x 101+5x100+0x10-1 +5x 10-2

    位权表示法的特点是:每一项=某位上的数字X基数的若干幂次;而幂次的大小由该数字所在的位置决定。

    三、二进制数

    计算机中为何采用二进制:二进制运算简单、电路简单可靠、逻辑性强。

    1、定义:

    按“逢二进一”的原则进行计数,称为二进制数,即每位上计满2 时 向高位进一。

    2、特点:

    每个数的数位上只能是0,1两个数字;二进制数中最大数字是1,最小数字是0;基数为2;

    比如:10011010与00101011是两个二进制数。

    3、二进制数的位权表示:

    (1101.101)2=1x23+1x 22+0x 21+1x 20+1x2-1 +0x 2-2+1x2-3

    4、二进制数的运算规则:

    加法运算

    ① 0+0=0 ③ 1+1=10

    ② 0+1=1+0=1

    乘法运算

    ① 0×0=0 ③ 1×1=1

    ② 0×1=1×0=0

    四、八进制数

    1、定义:

    按“逢八进一”的原则进行计数,称为八进制数,即每位上计满8时向高位进一。

    2、特点:

    每个数的数位上只能是0、1、2、3、4、5、6、7八个数字;八进制数中最大数字是7,最小数字是0;基数为8;

    比如:(1347)8与(62435)8是两个八进制数。

    3、八进制数的位权表示:

    (107.13)8=1x 82+0x 81+7x 80+1x8-1 +3x 8-2

    五、十六进制数

    1、定义:

    按“逢十六进一”的原则进行计数,称为十六进制数,即每位上计满16时向高位进一。

    2、特点:

    每个数的数位上只能是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F十六个数码;十六进制数中最大数字是F,即15,最小数字是0;基数为16;

    比如:(109)16与(2FDE)16是两个十六进制数。

    3、十六进制数的位权表示:

    (109.13)16=1x 162+0x161+9x 160+1x16-1 +3x 16-2

    (2FDE)16=2x 163+15x 162+13x 161+14x 160

    六、数制间的转换

    1、十进制数转换成非十进制数

    (1)十进制整数转换成非十进制整数

    为什么要进行数制间的转换?

    将数由一种数制转换成另一种数制称为数制间的转换。

    因为日常生活中经常使用的是十进制数,而在计算机中采用的是二进制数。所以在使用计算机时就必须把输入的十进制数换算成计算机所能够接受的二进制数。计算机在运行结束后,再把二进制数换算成人们所习惯的十进制数输出。这两个换算过程完全由计算机自动完成。

    转换方法

    十进制整数化为非十进制整数采用“余数法”,即除基数取余数。

    把十进制整数逐次用任意十制数的基数去除,一直到商是0 为止,然后将所得到的余数由下而上排列即可。

    十进制小数转换成非十进制小数转换方法

    十进制小数转换成非十进制小数采用“进位法”,即乘基数取整数。

    把十进制小数不断的用其它进制的基数去乘,直到小数的当前值等于0或满足所要求的精度为止,最后所得到的积的整数部分由上而下排列即为所求。

    2、非十进制数转换成十进制数

    非十进制数转换成十制数采用“位权法”,即把各非十进制数按位权展开,然后求和。

    3、二、八、十进制数之间转换

    (1)二进制 数与八进制数之间的转换转换方法

    把二进制数转换为八进制数时,按“三位并一位”的方法进行。

    以小数点为界,将整数部分从右向左每三位一组,最高位不足三位时,添0补足三位;小数部分从左向右,每三位一组,最低有效位不足三位时,添0补足三位。然后,将各组的三位二进制数按权展开后相加,得到一位八进制数。

    将八进制数转换成二进数时,采用“一位拆三位”的方法进行。

    即 把八进制数每位上的数用相应的三位二进制数表示。

    二进制数与十六进制数之间的转换转换方法

    a、把二进制数转换为十六进制数时,按“四位并一位”的方法进行。

    以小数点为界,将整数部分从右向左每四位一组,最高位不足四位时,添0补足四位;小数部分从左向右,每四位一组最低有效位不足四位时,添0补足四位。然后,将各组的四位二进制数按权展开后相加,得到一位十六进制数。

    b、将十六进制数转换成二进数时,采用“一位拆四位”的方法进行。

    即 把十六进制数每位上的数用相应的四位二进制数表示。

    展开全文
  • 为了提升性能,与设备端配合,往往最终使用的是二进制字节方式进行的通信协议封装,更会把0和1、True和False、Yes和No这样的布尔值每8个只占用个字节,用字节中的位来表示。减少传输量,减少对网络稳定性的要求...

    Python读字节某一位的值,设置某一位的值,二进制位操作

    在物联网实际应用项目开发中,为了提升性能,与设备端配合,往往最终使用的是二进制字节串方式进行的通信协议封装,更会把0和1、True和False、Yes和No这样的布尔值每8个只占用一个字节,用字节中的位来表示。减少传输量,减少对网络稳定性的要求。这就带来了要怎么读某个字节中每一位的值和怎么设置每一位的值的问题。

    这几天再写培训演示代码,顺便就写了两个函数,解决字节位值读写问题,现在分享给大家。

    下面直接上代码,在Python3上测试通过:

    #!/usr/bin/env python

    # -*- coding: utf-8 -*-

    def get_bit_val(byte, index):

    """

    得到某个字节中某一位(Bit)的值

    :param byte: 待取值的字节值

    :param index: 待读取位的序号,从右向左0开始,0-7为一个完整字节的8个位

    :returns: 返回读取该位的值,0或1

    """

    if byte & (1 << index):

    return 1

    else:

    return 0

    def set_bit_val(byte, index, val):

    """

    更改某个字节中某一位(Bit)的值

    :param byte: 准备更改的字节原值

    :param index: 待更改位的序号,从右向左0开始,0-7为一个完整字节的8个位

    :param val: 目标位预更改的值,0或1

    :returns: 返回更改后字节的值

    """

    if val:

    return byte | (1 << index)

    else:

    return byte & ~(1 << index)

    print(get_bit_val(3, 2)) # 3的2进制00000 0 11,2号位是0,打印结果0

    print(get_bit_val(3, 1)) # 3的2进制000000 1 1,1号位是1,打印结果1

    print(get_bit_val(3, 5)) # 3的2进制00 0 00011,5号位是0,打印结果0

    print(set_bit_val(3, 2, 1)) # 3的2进制00000 0 11,2号位改成1,打印结果7(00000111)

    print(set_bit_val(3, 1, 0)) # 3的2进制000000 1 1,1号位改成0,打印结果1(00000001)

    print(set_bit_val(3, 5, 0)) # 3的2进制00 0 00011,5号位改成0,打印结果3(00000011)

    """

    控制台输出:

    0

    1

    0

    7

    1

    3

    """

    展开全文
  • 编写个函数,输入是个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入...

    题目

    编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。

    提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
    在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。

    解答方法

    解法1: 利用循环移位的思想

    时间复杂度为O(1),空间复杂度为O(1)
    将整形数据中二进制码中的1的数量统计出来,其代码如下:

    int hammingWeight(uint32_t n) {
            int result = 0;
            for (int i = 0; i <32 ; i++){
                 result += ((n>>i) & 1);
            }
            return result;
        }
    
    

    解法2: 拿去数字最末尾的“1”,直到为0为止

    时间复杂度为O(1),空间复杂度为O(1)

    
    int hammingWeight(uint32_t n) {
            int result = 0;
            while (n!=0){
                result ++;
                n = n &(n-1);
            }
            return result;
        }
    
    
    展开全文
  • 如果字符由“01”组成并且没有前导零,则可以将此字符串称为正确的 以下是一些示例:“0”,“10”,“1001”。 给你个正确的字符s,您可以对此字符执行两种不同的操作: 1. 交换任何一对相邻字符...

    题目描述

    如果字符串由“0”和“1”组成并且没有前导零,则可以将此字符串称为正确的
    以下是一些示例:“0”,“10”,“1001”。
    给你一个正确的字符串s,您可以对此字符串执行两种不同的操作:
    1. 交换任何一对相邻字符(例如,“1 01” “1 10”);
    2. 将“11”替换为“1”(例如,“11 0” “1 0”)。
    设val(s)是一个数字,s是它的二进制表示。
    正确的字符串a小于其他正确的字符串b if (val(a)<  val(b))。
    您的任务是找到可以使用上述操作从给定字符串中获取的最小正确字符串。您可以按任何顺序多次使用这些操作(甚至根本不使用任何操作)。

     

     

    输入

    第一行为一个整数 n (1<=n <= 100)。
    第二行为一个长度为n且只包含0或1的字符串s, 保证字符串s是正确的。


     

    输出

    输出一个您可以从给定字符串中获取的最小正确字符串。

    样例输入

    4
    1001
    

    样例输出

    100

    来源

    ACM集训队 

    【AC代码】:

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int n = sc.nextInt();
    		String s = sc.next();
    		int t = 0;
    		for (int i = 0; i < n; i++)
    			if (s.charAt(i) == '0')
    				t++;
    		if (s.charAt(0) == '0')
    			System.out.println(0);
    		else {
    			System.out.print(1);
    			for (int i = 0; i < t; i++)
    				System.out.print(0);
    		}
    
    	}
    }

     

    展开全文
  • 二进制转BCD

    2016-08-31 22:48:00
    用4位二进制数表示1位十进制数中的0~9这10个数码。 BCD码这种编码形式利用了四个位元来储存个十进制的数码,使二进制十进制之间的转换得以快捷的进行。这种编码技巧,最常用于会计系统的设计里,因为 会计...
  • 最早的计算机在设计时采用8个比特(bit)作为个字节(byte),所以,个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字一些符号,这个编码表被称为ASCII...
  • 、字符编码简介 ...每二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,个字节一共可以用来表示256种不同的状态,每个状态
  • 每个二进制位(bit)有0和1两种状态,因此八个二进制位就能够组合出256种状态,这被称为一个字节(byte)。也就是说,个字节一共能够用来表示256种不同的状态,每个状态相应个符号,就是256个符号,从0000000到...
  • 每个二进制位(bit)有0和1两种状态,因此八个二进制位就能够组合出256种状态,这被称为一个字节(byte)。也就是说,个字节一共能够用来表示256种不同的状态,每个状态相应个符号,就是256个符号,从0000000到...
  • ES6------字符扩展1

    2020-02-22 19:28:36
    最早的计算机在设计时采用8个比特(bit)作为个字节(byte),所以,个字节能表示的最大的整数就是255(二进制11111111=十进制255), 0 - 255被用来表示大小写英文字母、数字一些符号,这个编码表被称为ASCII...
  • JAVA常量

    2021-01-07 09:32:47
    、常量 ()定义 常量值又称为字面常量,它是通过数据直接表示的,因此有很多种数据类型,像整型字符型等。下面一一介绍这些常量值。 (二)分类 ...二进制数形式【0b……】 Java 中的十六进制
  • C++语言基础-第

    2019-10-18 16:14:33
    二进制数位,取值只能是0或者1称为一个“bit",简写b; 八个二进制位称为一个字节(byte),简写B; 1024字节=1KB;1024KB=1MB;1024M=1GB;1024GB=1TB; ASCLL编码:由八个字节组成的,共有256种不同的...
  • 把它叫做数字电路是因为电路中传递的虽然也是脉冲,但这些脉冲是用来表示二进制数码的,例如用高电平表示1 ”,低电平表示0 ”。声音图像文字等信息经过数字化处理后变成了一串串电脉冲,它们被称为数字信号。...
  •  在计算机中所有的数据的保存均是用二进制来实现的,而二进制表示则是一串0,1组成。而在计算机的表达中有着机 器数和原码,反码,补码移码等数据的编码表示方法。其中这些编码的方法称为码制。 (1)、机器...
  • 在计算机中所有的数据的保存均是用二进制来实现的,而二进制表示则是一串0,1组成。而在计算机的表达中有着机器数和原码,反码,补码移码等数据的编码表示方法。其中这些编码的方法称为码制。 一、机器  ...
  • 音频的参数--采样位数、采样频率

    千次阅读 2014-09-25 22:35:18
    连续的模拟信号按一定的采样频率经数码脉冲取样后,每个离散的脉冲信号被以一定的量化精度量化成一串二进制编码流,这串编码流的位数即为采样位数,也称为量化精度。从码率的计算公式中可以清楚的看出码率采样...
  • 最早的计算机在设计时采用8个比特(bit)作为个字节(byte),所以,个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字一些符号,这个编码表被称为ASCII...
  • 数字逻辑电路

    千次阅读 2012-01-30 23:28:11
    把它叫做数字电路是因为电路中传递的虽然也是脉冲,但这些脉冲是用来表示二进制数码的,例如用高电平表示1 ”,低电平表示0 ”。声音图像文字等信息经过数字化处理后变成了一串串电脉冲,它们被称为数字信号。...
  • 1、字长 表示机器CPU的处理能力,即CPU在单位时间内能处理的最大二进制数的位数称为字长 若字长为32位,则1字=32bit=4B,表明存储器次可以处理4个存储单元,指令长度为4个存储单元。 2、位 数据存储的最小单位,...
  • python-基础数据类型

    2020-12-25 19:27:31
    Python基础数据类型数值类型整数类型(int)浮点数(float)复数(complex)数学计算布尔空值字符作业作业三作业四 数值类型 ...用0b前缀和0-1表示 bin() 整数长度32位 连续分配内存地址 小整数对
  • utf-8/gbk/unicode/ASCII我们都知道,在计算机内部所有的信息都可以被表示成二进制的字符,每个二进制位有1和0两种状态,因此8位的二进制数可以表示256种状态,这也被称为字节(byte),也就是个字节可以表示...
  • 为什么计算机用补码存储数据。

    千次阅读 2011-02-26 13:32:00
    在计算机内部,所有信息都是用二进制数串的形式表示的。整数通常都有正负之分,计算机中的整数分为无符号的和带符号的。无符号的整数用来表示0和正整数,带符号的证书可以表示所有的整数。由于计算机中符号和数字...
  • 02-java入门:基础语法

    2020-10-28 23:44:49
    目录二进制数据类型与变量变量变量...这系统中,通常用两个不同的符号0和1表示 。数字电子电路中,逻辑门的实现直接应用了二进制,因此现代的计算机和依赖计算机的设备里都用到二进制。每个数字称为一个比特(Bi
  • 开源软件许可证分类

    2009-06-19 09:00:00
    就是代码化的指令序列,是指用可体现为一串电脉冲序列的一串二进制数(由“01”组成)编码的指令。这种电脉冲序列是用来驱动计算机 工作( 以取得某种结果)时的计算机程序的形式。由于这种二进制数编码能够被...
  • 开放源代码软件及其许可证

    千次阅读 2005-12-08 10:52:00
    就是代码化的指令序列,是指用可体现为一串电脉冲序列的一串二进制数(由“01”组成)编码的指令。这种电脉冲序列是用来驱动计算机工作(以取得某种结果)时的计算机程序的形式。由于这种二进制数编码能够被计算机...
  • 把它叫做数字电路是因为电路中传递的虽然也是脉冲,但这些脉冲是用来表示二进制数码的,例如用高电平表示1 ”,低电平表示0 ”。声音图像文字等信息经过数字化处理后变成了一串串电脉冲,它们被称为数字信号。...

空空如也

空空如也

1 2 3 4
收藏数 64
精华内容 25
关键字:

一串二进制数0和1表示称为