二进制数

Leetcode 1073. 负二进制数相加(Adding Two Negabinary Numbers)

你。 提交于 2020-03-29 19:03:52
题目 Given two numbers arr1 and arr2 in base -2 , return the result of adding them together. Each number is given in array format: as an array of 0s and 1s, from most significant bit to least significant bit. For example, arr = [1,1,0,1] represents the number (-2)^3 + (-2)^2 + (-2)^0 = -3 . A number arr in array format is also guaranteed to have no leading zeros: either arr == [0] or arr[0] == 1 . Return the result of adding arr1 and arr2 in the same format: as an array of 0s and 1s with no leading zeros. Example Input: arr1 = [1,1,1,1,1], arr2 = [1,0,1] Output: [1,0,0,0,0] Explanation: arr1

python字符编码-文件操作

浪尽此生 提交于 2020-02-17 23:25:49
字符编码 字符编码历史及发展 为什么有字符编码 ''' 原因:人们想要将数据存入计算机 计算机的能存储的信息都是二进制的数据 内存是基于电工作的,而电信号只有高低频两种,就用01来表示高低电频,所以计算机里存储的数据都是0101这样的二进制数据 ''' 各种编码表/标准 的由来 """ 基于上述原因与情况 人们输入的都是我们自己能看懂的语言、字符, 而计算机里存储的却是二进制数据,这样计算机不能读懂了 所以在保存数据的时候有一个转换过程,要有一个对应关系将我们输入的字符转换成计算机能够存储的二进制数据 人输入的字符 >> 对应关系转换(字符编码表)>> 二进制数据 A 0100 0001 B 0100 0010 后来美国发明了ASCII码表,用八位二进制来表示一个英文字符 其实所有的英文字符 + 符合,最多也就在125位左右,用七位二进制就够了,采用八进制是给其他语言做了预留 """  补充: ''' 八位二进制也叫 8bit ---> 0000 0000 常见单位与转换: 8bit = 1Bytes 1024Bytes = 1KB 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 1024TB = 1PB ''' 各国各类编码的出现 """ 看到美国人有字符编码了,我们中国人也要用计算机,但ASCII码又没有中文的对应关系,于是乎就有国人发明了国标码

力扣 OJ 338. 比特位计数

家住魔仙堡 提交于 2020-02-08 19:18:08
题目: 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: 5 输出: [0,1,1,2,1,2] 进阶: 给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗? 要求算法的空间复杂度为O(n)。 你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++ 中的 __builtin_popcount)来执行此操作。 代码: class Solution { public: vector<int> countBits(int num) { vector<int>ans; ans.insert(ans.end(), 0); for (int i = 1; i <= num; i++) { ans.insert(ans.end(), i % 2 + ans[i / 2]); } return ans; } }; 来源: CSDN 作者: csuzhucong 链接: https://blog.csdn.net/nameofcsdn/article/details/104220855

逻辑运算

霸气de小男生 提交于 2020-02-08 04:23:42
所谓“逻辑”,在这里是指事物间的因果关系。当两个二进制数码表示不同的逻辑状态时,它们之间可以按照指定的某种因果关系进行推理运算。我们将这种运算称为逻辑运算。 来源: CSDN 作者: 放心疯 链接: https://blog.csdn.net/qq_42679773/article/details/104212832

输入一个2进制数转换成10进制输出—循环练习9

戏子无情 提交于 2020-02-07 00:44:51
*#include #include <Windows.h> #include using namespace std; int main(void) { string str; //二进制数据 int q = 0; // int p = 1; cout << "请输入一个人二进制数据: "; cin >> str; for(int i=str.length()-1; i>=0; --i) { int j = str[i] - '0'; q += j*p; p *= 2; } cout << "q==" << q << endl; /** for (int i=str.length()-1; i>=0; i--) { int x = str[i] - '0'; s += x * p; p *= 2; } //假设:str = 1010 s = 0 p = 1 x = 0 // 1. 0-0 = 0 x = 0 // 2. 0*1 = 0 s = 0 0+0= 0=s // 3. 1*2 = 2 p = 2 // s = 0 p = 2 // 1. 1-0 = 1 x = 1 // 2. 1*2 = 2 s = 2 0+2= 2=s // 3. 2*2 = 4 p = 4 // s = 2 p = 4 // 1. 0-0 = 0 x = 0 // 2 . 0*4 = 0 s = 2

python 学习日志 20.1.23

ⅰ亾dé卋堺 提交于 2020-01-31 12:27:08
二进制数用0b表示 八进制数用0o表示 十六进制用0x表示 bin()将数字用二进制表示 int()将数字用十进制表示 oct()将数字用八进制表示 hex()将数字用十六进制表示 来源: CSDN 作者: weixin_45923252 链接: https://blog.csdn.net/weixin_45923252/article/details/104112360

二进制中1的个数-python

只愿长相守 提交于 2020-01-29 00:57:14
#实现一个函数,输入一个整数,输出该数2进制表示中1的个数 #思路1:将输入整数与1做与运算,结果是1,最右边一位是1,否则是0,之后在将整数右移继续判断。问题:在输入负数时会陷入死循环 def NumberOf1 ( n ) : cnt = 0 if n < 0 : n = n & 0xffffffff return bin ( n ) . count ( '1' ) #思路2:不右移输入的数字,先将n与1做与运算,判断n的最低位是不是1,接着在将1左移一位得到2,判断次低位是不是1,之后依次判断 def NumberOf1_v2 ( n ) : flag = 1 count = 0 while flag <= 32 : if n & flag : count += 1 flag << = 1 return count #思路3:将一个整数-1,再和原整数做与运算,会把该整数最右边的1变成0,可以进行多少次这样的运算就是有多少个1 def NumberOf1_v3 ( n ) : count = 0 if n < 0 : n = n & 0xffffffff while n : n = n & ( n - 1 ) count += 1 return count # print(NumberOf1_v3(3)) 来源: CSDN 作者: 看雨c 链接: https://blog

1022. Sum of Root To Leaf Binary Numbers

丶灬走出姿态 提交于 2020-01-14 08:49:55
1022. 从根到叶的二进制数之和 给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1 ,那么它表示二进制数 01101 ,也就是 13 。 对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。 以 10^9 + 7 为 模 ,返回这些数字之和。 示例: 输入:[1,0,1,0,1,0,1] 输出:22 解释:(100) + (101) + (110) + (111) = 4 + 5 + 6 + 7 = 22 提示: 树中的结点数介于 1 和 1000 之间。 node.val 为 0 或 1 。 解法一 //时间复杂度O(n), 空间复杂度O(logn) /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: void sumRootToLeaf(TreeNode* root, int cur, int& sum) {

二进制数问题

陌路散爱 提交于 2020-01-10 07:59:01
熟悉语言的水题 # include <cstdio> bool judge ( int num ) { //直接用函数省事 int count1 = 0 ; int count2 = 0 ; while ( num > 0 ) { int temp = num % 2 ; if ( temp == 0 ) count1 ++ ; else count2 ++ ; num = num / 2 ; } if ( count1 > count2 ) return true ; //如果0比1多,就证明是B类数 return false ; } int main ( ) { int counta = 0 ; int countb = 0 ; for ( int i = 1 ; i <= 1000 ; i ++ ) { if ( judge ( i ) ) countb ++ ; else counta ++ ; } printf ( "%d %d" , counta , countb ) ; //多熟悉scanf与printf的使用节省时间 return 0 ; } 来源: CSDN 作者: 柳神的小迷弟 链接: https://blog.csdn.net/qq_38027644/article/details/103843542

算术运算单元ALU的设计与实现

拟墨画扇 提交于 2019-12-30 13:10:27
算术运算单元ALU的设计与实现 这是2018年大三时的一个课程设计,在这里把相关技术和用到的知识分享给大家。(由于编者水平有限可能存在错误的地方,欢迎大家指正)题目给出的要求如下: 一、设计题目及要求 要求: 1.进行两个四位二进制数的运算。 2.算术运算:A+B,A-B,A+1,A-1 3.逻辑运算:A and B,A or B,A not, A xor B 注意:从整体考虑设计方案,优化资源的利用 二、设计过程及内容 2.1总体设计 ALU算术运算单元由以下几个部分构成: 图1 ALU运算单元系统结构图 为了尽可能减少资源的使用(或以相同的资源增加更多的功能),在此系统的基础上,增加基于寄存器的分时复用输入模块进行改进。 图2 基于分时复用方法的ALU运算单元结构 ①输入模块 该模块用于两个四位二进制数的输入。通过使用实验箱的拨码开关,输入高低电平,表示二进制的 1和0,四组拨码开关组合可以表示一个四位二进制数。 ②逻辑运算单元 该模块用于两个四位二级制数的逻辑运算。通过列出一位二进制数逻辑运算的真值表(含有四种不同的逻辑运算功能),得出了一位二进制数逻辑运算单元的表达式(已使用卡诺图化简)。将按照逻辑表达式连接好的多个一位二进制逻辑运算单元进行组合,可得到多位二进制数逻辑运算单元。 通过使用“真值表+卡诺图”的方法将所有的逻辑运算的表达式融合在一起进行化简