二进制代码

第二次博客园作业

一个人想着一个人 提交于 2019-12-04 04:30:43
一、运行截图 二、介绍函数 1. void mune() { printf("请选择需要的进制转换\n"); printf("1、十进制转换二进制\n"); printf("2、二进制转换十进制\n"); printf("3、十进制转换八进制\n"); printf("4、八进制转换十进制\n"); printf("5、二进制转换八进制\n"); printf("6、八进制转换二进制\n"); printf("7、十进制转换十六进制\n"); printf("8、十六进制转换十进制\n"); 菜单 2. void TenToTwo() { int number, m, c, i = 0, n = 2; int a[32]; printf("输入一个整数:"); scanf("%d", &number); m = number; while (number > 0) { c = (number % n); a[i] = c; number = number / n; i++; } printf("十进制数%d转换成二进制数是:", m); for (i--; i >= 0; i--) printf("%d", a[i]); printf("\n"); 将十进制转化成二进制 3. void TwoToTen() { long long n, a; int sum = 0, i = 0,

第二次博客园作业

邮差的信 提交于 2019-12-04 04:29:08
一.运行截图 1.启动界面 2.输入运行 3.输入无效 4.退出 二. 三. 函数介绍 int translate(int number, int system);//在2转8进制或8转2进制时先转为十进制数 int _2to8(int number, int system);//将二进制转为八进制 int _2to10(int number, int system);//将二进制转为八进制 int _8to2(int number, int system);//将八进制转为二进制 int _8to10(int number, int system);//将八进制转为十进制 int _10to2(int number, int system);//将十进制转为二进制 int _10to8(int number, int system);//将十进制转为八进制 int pow(int num, int n);//调用指数函数 int judge(int number, int system);//判断输入数字与进制是否对应 函数translate int translate(int number, int system) { if (system == 2) { return _2to10( number, system);//将二进制数转为十进制 } if (system == 8

函数+进制转换器

我是研究僧i 提交于 2019-12-04 03:26:21
一.运行截图 注释:正常操作由二进制数转换为八进制数。 注释:如果输入输出前后进制类型相同,输出输入的值。 注释:如果输入进制类型不是规则给定的,输出错误。 注释:如果输入进制类型不是规则给定的,输出错误。 注释:如果输入的数与该数进制类型不符,输出错误。 二.函数介绍 ①二进制→八进制 void twoTOeight(int x){ if(x%10>1){ printf("ERROR!"); return; } int result1=0,result2=0,i=0,remainder; while(x!=0){ remainder=x%10; result1+=remainder*pow(2,i); i++; x=x/10; } i=1; while(result1!=0){ result2+=(result1%8)*i; result1=result1/8; i=i*10; } printf("转换成功!\n结果为:%d",result2); } 思路:首先判断输入的数是否合法,再将输入的数转为十进制,再转为八进制。 ②二进制→十进制 void twoTOten(int x){ if(x%10>1){ printf("ERROR!"); return; } int result1=0,i=0,remainder; while(x!=0){ remainder=x%10;

Python中的四种交换数值的方法

∥☆過路亽.° 提交于 2019-12-03 05:36:51
交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的。 今天这个面试是问大家有几种办法来实现交换两个变量的值。 在没开始看具体答案前,你可以先想想看 下面分别来说说这几种方法 方法一 通过新添加中间变量temp的方式,这个方法是最简单的,每个语言都适用。 方法二 Python独有的方法,一行代码就能搞定,直接将两个变量放到元组。 方法三 这个方法采用加减法来交换。不考虑效率,能达到交换的效果就行 方法四 采用异或运算,这个是不是看起来比较高大上。通过按位异或运算来交换两变量的值,可以减少变量的定义。 按位异或运算即计算机会先把十进制数转化为二进制数,并对二进制数讲行从右到左用从1开始编数,然后比较两个二进制数值相同位置的数,如果相同结果为0,不同时结果为1。 “1^1=01^0=10^0=0° 如:10101111 则结果为0101 来源: https://www.cnblogs.com/oldfish123/p/11780271.html

字符的编码方式

丶灬走出姿态 提交于 2019-12-03 03:36:53
1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出 256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从 0000000到11111111。 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。 ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。 2、非ASCII编码 英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。 于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使 用的编码体系,可以表示最多256个符号。 但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如

ORB

匿名 (未验证) 提交于 2019-12-03 00:38:01
1、算法介绍 1.1 Fast 特征提取 ORB算法的特征提取是由FAST算法改进的,这里成为oFAST(FASTKeypoint Orientation)。也就是说,在使用FAST提取出特征点之后,给其定义一个特征点方向,以此来实现特征点的旋转不变形。FAST算法是公认的最快的特征点提取方法。FAST算法提取的特征点非常接近角点类型。oFAST算法如下: 步骤一 :粗提取。该步能够提取大量的特征点,但是有很大一部分的特征点的质量不高。下面介绍提取方法。从图像中选取一点P,如上图1。我们判断该点是不是特征点的方法是,以P为圆心画一个半径为3pixel的圆。圆周上如果有连续n个像素点的灰度值比P点的灰度值大或者小,则认为P为特征点。一般n设置为12。为了加快特征点的提取,快速排出非特征点,首先检测1、9、5、13位置上的灰度值,如果P是特征点,那么这四个位置上有3个或3个以上的的像素值都大于或者小于P点的灰度值。如果不满足,则直接排出此点。 步骤二 :机器学习的方法筛选最优特征点。简单来说就是使用ID3算法训练一个决策树,将特征点圆周上的16个像素输入决策树中,以此来筛选出最优的FAST特征点。 步骤三 :非极大值抑制去除局部较密集特征点。使用非极大值抑制算法去除临近位置多个特征点的问题。为每一个特征点计算出其响应大小。计算方式是特征点P和其周围16个特征点偏差的绝对值和

二进制中一的个数

匿名 (未验证) 提交于 2019-12-03 00:34:01
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 奇数的二进制最后一位是1,偶数的二进制最后一位是0,可以通过无符号右移来不断判断。 //@1 奇数的二进制最后一位是1,偶数的二进制最后一位是0,可以通过无符号右移来不断判断。 public int bitcount1( int n) { int count = 0 ; while (n!= 0 ) { //整数有正有负 if (n% 2 != 0 ) { //判断奇偶 count ++; } n=n>>> 1 ; //无符号右移 } return count ; } 知道了位移操作同样可以判断奇偶,且效率高于除法操作(“ % ”求余操作最后还是化为除法操作)那就可以用位移来代替上的求余运算。 因为 x & 1 的结果为 1 或 0 ,为 1 的时候 count+=1 ,为 0 的时候 count+=0 则: If (x& 1 == 1 ) { count++; } 可简化为: count+ = x& 1 ; 代码如下: public int bitcount2( int n) { int count = 0 ; while (n!= 0 ) { //整数有正有负 count = count +(n& 1 ); n=n>>> 1 ; } return count ; } 正整数的二进制最高位为 0

leetcode-696. 计数二进制子串

匿名 (未验证) 提交于 2019-12-03 00:27:02
一、问题描述 s ,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。 重复出现的子串要计算它们出现的次数。 示例 1 : 输入: "00110011" 输出: 6 解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。 请注意,一些重复出现的子串要计算它们出现的次数。 另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。 示例 2 : 输入: "10101" 输出: 4 解释: 有4个子串:“10”,“01”,“10”,“01”,它们具有相同数量的连续1和0。 二、代码和思路 第一次: 主要考虑左右连续二进制数的长度,然后选择两者之间的最小值加入到count,从右边的开始位置继续遍历 这样相当于重复遍历右边的连续二进制的数量,做了下面第二次的改进 class Solution(object): 第二次: 1.这里首先查看第一次连续相等二进制的长度,记录 2.寻找第二个连续相等二进制的长度,与第一次长度相比的较小值加到count,并将第二次的连续相等二进制的长度记录 3.重复1,2,这里的算法复杂度相当于O(n) class Solution(object): 三、运行结果 文章来源: leetcode-696. 计数二进制子串

C++重载运算符和标准模板库(STL)

匿名 (未验证) 提交于 2019-12-03 00:21:02
一、重载运算符 在C++中,不只是函数可以重载,某些运算符也是可以重载的,即可以自定义运算符的功能,可以重载的运算符如下: 运算符 名称 类型 , 逗号 二进制 ! 逻辑“非” һԪ != 不相等 二进制 % ȡģ 二进制 %= 取模赋值 二进制 & 按位“与” 二进制 & address-of һԪ && 逻辑“与” 二进制 &= 按位“与”赋值 二进制 ( ) 函数调用 ― ( ) 强制转换运算符 һԪ * 乘法 二进制 * 指针取消引用 һԪ *= 乘法赋值 二进制 + 添加 二进制 + 一元加 һԪ ++ 递增 1 һԪ += 加法赋值 二进制 - 减法 二进制 - 一元求反 һԪ -- 递减 1 һԪ -= 减法赋值 二进制 -> 成员选择 二进制 ->* 指向成员的指针选定内容 二进制 / 除法 二进制 /= 除法赋值 二进制 < 小于 二进制 << 左移 二进制 <<= 左移赋值 二进制 <= 小于或等于 二进制 = 赋值 二进制 == 相等 二进制 > 大于 二进制 >= 大于或等于 二进制 >> 右移 二进制 >>= 右移赋值 二进制 [ ] 数组下标 ― ^ 异或 二进制 ^= 异或赋值 二进制 | 按位“与或” 二进制 |= 按位“与或”赋值 二进制 || 逻辑“或” 二进制 ~ 二进制反码 һԪ delete Delete ― new New ―

利用二进制运算实现加法(不使用四则运算)

匿名 (未验证) 提交于 2019-12-03 00:11:01
这两天去参加面试碰到的一个题,题不难,就是忘记了。 题目: 要求求两个整数之和,并且不得使用+、-、*、/ 四则运算符号。 解析: 很明显这个题要用二进制运算去解决。 二进制的按位相加实际等效于异或。 二进制的每位的进位计算等效于按位与,然后左移。 进位加上按位相加结果就是最终结果。 重复使用前两步,直到没有进位为止。 代码如下: #include < stdio . h > int Add ( int num1 , int num2 ) { int sum , carry ; do { sum = num1 ^ num2 ; carry = ( num1 & num2 ) < < 1 ; num1 = sum ; num2 = carry ; printf ( "%d,%d\n" , num1 , num2 ) ; // 打印输出可以更方便看懂内部运行逻辑 } while ( num2 != 0 ) ; return num1 ; } int main ( ) { int num1 , num2 ; scanf ( "%d%d" , & num1 , & num2 ) ; printf ( "%d\n" , Add ( num1 , num2 ) ) ; return 0 ; } 来源:51CTO 作者: sudo-wang 链接:https://blog.csdn.net