精华内容
下载资源
问答
  • 2.求两个进制形式不同个数 3.分别输出一个进制位与偶数位 4.改写一个进制某一位值 —————————————————————————————————————————————— *1.常用...

    内容

    1.常用操作符
    2.运算优先级
    3.求两个数二进制形式不同位的个数
    4.分别输出一个数二进制奇数位与偶数位
    5.改写一个数二进制某一位的值
    ——————————————————————————————————————————————

    *1.常用操作符与表达式运算

    (1)算术操作符

    • 加减乘除 :+ 、-、 *、 /、 %;

    (2)移位操作符

    • << 左移操作符——抛弃左边,右边补0;每左移一位=>相当于 * 2;
    • << 右移操作符
      • 算术右移:最低位不要了,整体向右移一位,最高位补符号位(0表示整数,1表示负数)每右移一位=>相当于/ 2;
      • 逻辑右移: 最低位不要了,整体向右移一位,最高位补0;

    注意:位移运算,不能移动负数位;相对于位移运算,CPU计算乘除法相对低效,故如果代码中需要计算乘除 2^n <=>位移运算。

    (3)位操作符

    • & //按位与——同位对应都为1=>1,否则为0;
    • | //按位或——同位对应都为0=>0,否则为1;
    • ^ //按位异或——同位对应相同为0,否则为1;

    注:他们的操作数必须是整数

    (4)赋值操作符

    • =、 += 、-= 、*= 、/=、%=、|=、&=、^=、<<=、>>=

    (5)单目操作符

    • !逻辑反操作、+正-负、~对一个二进制进行按位取反操作、前置/后置++/–、&取地址操作符、*间接访问操作符/解引用操作符、sizeof计算操作数类型长短(单位字节)、(类型)强制类型转换操作

    (6)关系操作符

    • 比较:>、<、>=、<=、!=、==

    (7)逻辑操作符

    • 逻辑与:&&
    • 逻辑或:||

    (8)条件操作符

    • 三目运算符:exp1 ? exp2 : exp3 (exp1值为真,则运算结果为exp2;否则结果为exp3)

    (9)逗号表达式

    • 从左到右依次执行,表达式结果=>最右侧表达式的值;exp1, exp2, exp3, …expN;

    (10)下标引用、函数调用和结构成员

    • 标引用操作符:[ ]; 数组名[索引值]; arr[1]——相当于访问数组第二个元素;
    • 函数调用操作符:( );函数名(参数名);
    • 访问结构的成员:
      • 访问结构体成员操作符:. ;
      • 访问结构体指针操作符:-> ;

    注意:

    • 表达式求值:一般由操作符的优先级和结合性来决定;有些表达式在求值计算过程中操作数会转换成别的类型;
    • 隐式转换:C的整型算术运算总是至少以缺省整型类型的精度来进行的(4个字节);
    • 整型提升:为了获得统一的精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型;整形提升是按照变量的数据类型的符号位来提升的(只要参与表达式运算,就会发生整型提升)

    (11)操作符属性(复杂表达式的求值有三个影响的因素):

    • 操作符的优先级
    • 操作符的结合性
    • 是否控制求值顺序

    ab + cd + e*f ; 或 c+ --c;虽然相邻两个操作符之间能够根据优先性和结合性计算,但是多个操作数的计算或者同级别的并列计算无法判断先后顺序,故结果是不可预测的,是有歧义的;测试结果:判定为非法表达式程序;
    注意:如果写出的表达式如果不能通过操作符的属性确定唯一的计算路径,那这个表达式就是存在问题的。

    (12)算术转化: 如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类型,否则操作就无法进行。下面的层次体系称为寻常算术转换
    在这里插入图片描述

    注意:如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另外一个操作数的类型后执行运算;算术转换要合理,要不然会有一些潜在的问题(精度丢失)。

    *2.运算优先级

    在这里插入图片描述

    *3.求两个数二进制形式不同位的个数

    #include<stdio.h>
    #include<stdlib.h>
    
    int diffBinary(int a, int b) {
    	int num = a ^ b;
    	int count =0;
    	for (int i = 0; i < 32; i++) {
    		if (num & (1 <<i)) {
    			count++;
    		}
    	}
    	return count;
    }
    
    int main() {
    	int a = 2;
    	int b = 3;
    	int ret = diffBinary(a, b);
    	printf("%d和%d 二进制形式不同位的个数为: %d\n", a, b, ret);
    
    	sysytem("pause");
    	return 0;
    }
    

    在这里插入图片描述

    *4.分别输出一个数二进制奇数位与偶数位

    #include<stdio.h>
    #include<stdlib.h>
    
    //分别输出一个数二进制奇数位与偶数位
    void printBinary(int num) {
    	printf("num的二进制偶数位为:");
    	for (int i = 31; i >= 1; i -= 2)
    	{
    		printf("%d ", (num >> i) & 1);
    	}
    	printf("\nnum的二进制奇数位为:");
    
    	for (int i = 30; i >= 0; i -= 2)
    	{
    		printf("%d ", (num >> i) & 1);
    	}
    	printf("\n");
    }
    
    int main() {
    	int num = 2;
    	printBinary(num);
    	sysyetm("pause");
    	return 0;
    }
    

    在这里插入图片描述

    *5.改写一个数二进制某一位的值

    (1)改写一个数二进制某一位的值为1/0;

    #include<stdio.h>
    #include<stdlib.h>
    
    int main() {
    	int a = 1;
    	a=a|(1<<1); //把a=1 的第二位改为1=>a变为3
    	printf("把1 的第二位改为1后值为:%d\n", a);
    	a = a & (~(1 << 0)); //把a=3 的第一位改为0=>a变为2
    	printf("把3 的第一位改为0后值为:%d\n", a);
    	system("pause");
    	return 0;
    }
    

    在这里插入图片描述

    展开全文
  • 每个下标对应不同的状态,1表示正常0表示不正常 如7进制是111,则表示三个状态都正常6进制110表示第一个不正常,第二第三个都正常. 要查询第二个状态是正常,直接sql也能查出. 这个样表示好处就是便于以后...

    公司项目中领导要求数据库的一个字段用int类型的二进制表示多种状态
    每个下标对应不同的状态,1表示正常0表示不正常
    如7的二进制是111,则表示三个状态都正常6的二进制110表示第一个不正常,第二第三个都正常.
    要查询第二个状态是正常的,直接sql也能查出.
    如要查出第3位是正常所有记录

    select * from tableName where (column >> (3-1)) & 1 = 1;
    

    这个样表示的好处就是便于以后扩展,以后的状态有增减不用修改数据库.

    package com.base;
    
    /**
     * @Authro: QYF
     * @Time:2021/2/26 21:38
     */
    public class BinaryDemo {
        public static void main(String[] args) {
            //整数
            int num = 18;
            //转成二进制
            String binary = Integer.toString(num, 2);
            //从低位算,获取第几位是否为1
            int index = 2;
            boolean flag = getStatusType(num, index);
            System.out.println(num + "的二进制为:" + binary + ",二进制第:" + index + "位为:" + (flag ? 1 : 0));
    
            //状态
            int status = 0;
            int result = updateStatusType(num, index, status);
            System.out.println(num + "的二进制为:" + binary + ",把第" + index + "位改成" + status);
            System.out.println(result + "的二进制为:" + Integer.toString(result, 2));
        }
    
        /**
         * 判断第几位是否为1
         * <p>
         * 如18的二进制为10010,要获取第3位,则右移(3-1)位得100,第2位变成第1位,这样就可以和&1,最低位为1返回1,为0则返回0
         *
         * @param num   整数
         * @param index 低位起第几位下标
         * @return
         */
        private static boolean getStatusType(int num, int index) {
            return (num >> (index - 1) & 1) == 1;
        }
    
        /**
         * @param num    整数
         * @param index  低位起第几位下标
         * @param status 要修改的状态
         * @return
         */
        private static int updateStatusType(int num, int index, int status) {
            if (status != 0 && status != 1) {
                throw new IllegalArgumentException();
            }
            if (status == 1) {
                //1向左移(index-1) 和10010 或
                return (1 << (index - 1)) | num;
            } else {
                //先判断原来是不是0,原来是0则直接返回
                if (!getStatusType(num,index)){
                    return num;
                }
                //10010 - 1向左移(index-1)
                return num - (1 << (index - 1));
            }
    
        }
    
    }
    

    输出结果:

    18的二进制为:10010,二进制第:2位为:1
    18的二进制为:10010,把第2位改成0
    16的二进制为:10000
    
    展开全文
  • 进制数的书写通常在数的右下方注上基数2,或在后面加B表示,其中B是英文二进制Binary的首字母。 例如:二进制数10110011可以写成(10110011)2,或写成10110011B。 2.十进制 对于十进制数可以不加标注,或加...

    注意 操作系统或者编程语言显示的各种进制格式 往往不同于一般的进制书写方式

     

    1.二进制

    二进制数的书写通常在数的右下方注上基数2,或在后面加B表示,其中B是英文二进制Binary的首字母。

    例如:二进制数10110011可以写成(10110011)2,或写成10110011B。

     

    2.十进制

    对于十进制数可以不加标注,或加后缀D,其中D是英文十进制Decimal的首字母D

     

    3.八进制

    八进制用下标8或数据后面加O表示

    例如:二进制数据 (11 101 010 . 010 110 100)2 对应八进制数据 (352.264)8或352.264O

     

    4.十六进制

    十六进制数有两个基本特点:它由十六个数码:数字0~9加上字母A-F组成,十六进制数运算规律是逢十六进一.

    例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H

     

    展开全文
  • 进制转换知识点

    2019-04-10 16:24:00
    为了区别不同数制表示数,通常用右括另外下标数字或字母表示数制,十进制数用D表示,二进制用B表示,十六进制数用H表示,八进制用O表示 进制也就是进制位,对于接触过电脑人来说应该都不陌生,我们常用...

    十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。在数学中是一种逢16进1的进位制,一般用数字0到9和字母A到F表示(其中:A~F即10~15)。
    为了区别不同数制表示的数,通常用右括另外下标数字或字母表示数制,十进制数用D表示,二进制用B表示,十六进制数用H表示,八进制用O表示

    进制也就是进制位,对于接触过电脑的人来说应该都不陌生,我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制也就是我们常用的0-9是逢10进一位。具体的用法小编今天不着重解释,主要针对他们之间的转换加以讨论(今天只讲整数)。

     

     

    二进制与十进制之间的转换

     
    1. 1

      十进制转二进制

      方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。

      (具体用法如下图)

       

       

    2. 2

      二进制转十进制

      方法为:把二进制数按权展开、相加即得十进制数。

      (具体用法如下图)

       

       

      END

    二进制与八进制之间的转换

     
    1. 1

      二进制转八进制

      方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。

      (具体用法如下图)

       

       
    2. 2

      八进制转成二进制

      方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。

      (具体用法如下图)

       

       

      END

    二进制与十六进制之间的转换

     
    1. 1

      二进制转十六进制

      方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。

      (具体用法如下图)

       

       

    2. 2

      十六进制转二进制

      方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。

      (具体用法如下图)

       

       

      END

    十进制与八进制与十六进制之间的转换

     
    1.  

      十进制转八进制或者十六进制有两种方法

      第一:间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。这里不再做图片用法解释。

    2.  

      第二:直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。

      (具体用法如下图)

       

       

    3. 3

      八进制或者十六进制转成十进制

      方法为:把八进制、十六进制数按权展开、相加即得十进制数。

      (具体用法如下图)

       
    4. 八进制与十六进制之间的转换有两种方法

      第一种:他们之间的转换可以先转成二进制然后再相互转换。

      第二种:他们之间的转换可以先转成十进制然后再相互转换

    转载于:https://www.cnblogs.com/itchenguo/p/10684246.html

    展开全文
  • 统计字符串中不同字符个

    千次阅读 2018-09-01 22:51:04
    1、原来以为要得到字符ASCII码值要将字符转换成十进制数,但在调试过程中发现整数就代表一个字符,比如:98=‘d’,所以可以直接用字符作数组下标即可 2、在调试时发现strlen()函数将输入时(用...
  • n皇后问题描述 在一个n×n的国际象棋棋盘上放置n个皇后,使得她们中...不同行:数组x的下标保证是不重复的。 不同列:x[i] ! = x[j] (i<=n,j<=n,i != j) 不同对角线:abs(x[i]-x[j]) ! = abs(i-j) 对角线有两
  • 计算机中数的表示

    2008-06-19 11:32:45
    (一)二进制 电子计算机处理的信息,都是仅用“0”与“1”两个简单数字表示的...这了区别不同数制表示的数,通常用右括另外的下标字母表示括号内的数制,十进制数用D表示,二进制用B表示,十六进制数用H表示。 二...
  • 题意: 现有一个数组a,选两个不同下标的数一个赋值为二者 ’ & ‘值,另一个赋值为二者’ | '值。最后计算所以ai ^ 2和ans,求ans最大值。 思路: 1个数不会变:例如3 和 5,011 & 101 = 001,...
  • 不同进制数的转换2.1 二转八、十六2.2二转十3.数据符号的表示3.1十进制编码与运算3.2数字串在计算机内的表示和存储 1.数制 应用最广泛的是十进制。 (N)10 = Dm*10m+Dm-1*10m-1+…+D0*100+D-1*10-1+…+D-k*10-k =∑i=...
  • (二)数字逻辑基础2

    2020-03-21 23:17:02
    最小项编号:任何一个最小项用m[i]表示,m表示最小项,下标i为使该最小项为1变量取值所对应等效十进制数 最小项性质: (1) 每个最小项只有一组变量取值使它为1 (2) n个变量全体最小项之和为1 (3) 不同的最小项...
  •  Base16编码跟Base64编码原理上有点不同,当然前面转换是一样,都是是将输入字符串根据默认编码转换成一个字节序列,而这个字节序列里面其实就是存ASCII码,其次,将每个ASCII码转换成8位二进制,每个八位二...
  • 常见数据结构

    2021-04-22 18:48:32
    ​ 常见的就是数组,我们只要指定数组的下标(index)就能访问它,大多数情况下,数组的下标都是整数,有时也可以使用非数字的下标,如在C语言中可以指定字符作为下标(在底层依然是数字)。 ​ 数组可以实现很多其他...
  • 针对差值局部方向模式...取两组边缘响应差值最大值对应方向下标, 组成一个二位八进制数, 形成OGDLDP码。在YALE和AR人脸库进行实验结果表明: 所提算法提高了识别率, 且对光照、表情和遮挡变化有较好稳健性。
  • codeforces895C 2000分状压

    2020-01-30 22:01:03
    不能选0个数,且不同方案需要两个方案中至少有一个数的下标不同。 数据范围: ,。 题解: 不超过的质数有 个,考虑状压。 位二进制数,每位的代表当前位对应质数出现偶数次,每位的代表当前位对应质数出现奇数...
  • 浅谈格雷编码

    千次阅读 2020-10-11 16:09:27
    3 位二进制数的格雷码序列为 000,001,011,010,110,111,101,100,(可以看成一个环,第一个格雷码 000 与最后一个格雷码 001 也只有一位不同). 规定序列的下标以 0 为起点,即 G(0)=000,G(7)=100G(0)=000,G(7)=100G...
  • UTF小记(一)

    2018-11-02 15:16:00
    不同电脑系统、编程语言对于16进制数值有不同的表示方式: 1. C语言、C++、Shell、Python、Java语言及其他相近语言使用字首“0x”,例如“0x5A3”。开头“0”令解析器更易辨认,而“x”则...
  • leetcode随记备忘(12)

    2020-06-23 15:10:08
    但是有所不同的是二进制数的表示是下标大的在低位,所以下标控制上要注意。(其实完全可以把给定的两个字符串先reverse再操作,我蠢了)。最后结果也要reverse。代码如下: class Solution { public: string add...
  • ACM模板——字典树

    2018-07-25 15:26:22
    01字典树:  /* 数组大小定义为:2e6+10,数组大小与 n,m 是无关的,只...因为这里是边作为 二进制位,结点作为 链接下一个结点的下标。又因为题目说了是 cid^pid 最大的,所以根据异或相同则0,不同则1的性质...
  • 在本例中,变量a与b对应位组合代表了二进制数所有 4 种组合模式:0-0,0-1,1-0 ,和1-1 。“|”运算符和“&”运算符分别对变量a与b各个对应位运算得到了变量c和变量d值。对变量e和f赋值说明了“^”运算符...
  • C语言-操作符详解

    2021-03-20 11:10:52
    操作符详解操作符分类算术操作符移位操作符 :移动是二进制位,只能作用于整形左移操作符 移位规则右移操作符 移位规则:[右移1位有除2效果]位操作符 : ...求二进制不同个数打印二进制的位和偶数位交换两个
  • 布隆过滤器详解

    2021-06-15 08:46:50
    布隆过滤器 ...如果要存入 “你好” 这个字符串,首先会经过n个哈希函数计算,会计算出不同的哈希值,然后将这几个哈希值映射到数组中,对应位置进制数被修改为1,如下图所示: 下标为3、5、7
  • 转换为数字: parseInt();转换为整数型数值;从下标0开始判断,若为数值型则... 能转换为不同的进制;如:var a=parseInt("123",2);//返回结果为2进制 parseFloat();转换为小数;从下标0开始,只有10进制形...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    我就可以把“array”当作下标从1 开始数组。 函数和多维数组 6.18 当我向一个接受指针指针函数传入二维数组时候,编译器报错了。 6.19 我怎样编写接受编译时宽度未知二维数组函数? 6.20 我怎样...
  • 要求:能区分js数据类型种类、不同数据类型的不同表现形式,不同数据类型之间转换(转number、转string) js数据类型 number 数字、进制、NaN(不能正确运算时候)、infinity NaN == NaN : false 0.1+...
  • 如果这个本身就带下标,如 aka_kak​,那么用 ak,ia_{k,i}ak,i​ 表示 aka_kak​ 在二进制第 iii 位。 发现带上绝对值很难搞,考虑如何确定绝对值符号: 对于 ∣a−b∣|a-b|∣a−b∣ 来说,我们找到 aaa 和 ...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    不同编译器给出不同的i值,有为3,有为4,哪个是正确? 34  *3.4 有这样一个巧妙表达式:a^= b^= a^= b; 它不需要临时变量就可以交换a和b值。 34 3.5 可否用显式括号来强制执行我所需要计算顺序并...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

不同进制数的下标