-
js 十六进制转换二进制 二进制转十六进制 异或算法
2018-08-29 10:31:57因为自带的方法在进行十六进制转为二进制的时候,精度在13位字符后就会出现丢失,为了让精度不丢失就自己根据16进制转换2进制的原理写了两个两个方法 如果长度没有超过13位,可以用parseInt("125adf8",...为什么要单独写个方法去做不同进制之间的转换呢?因为自带的方法在进行十六进制转为二进制的时候,精度在13位字符后就会出现丢失,为了让精度不丢失就自己根据16进制转换2进制的原理写了两个方法
如果长度没有超过13位,可以用parseInt("125adf8",16).toString(2)='1001001011010110111111000',
十六进制转换二进制 (本次转换的方法没有考虑带小数点的情况)
function hex_to_bin(str) { let hex_array = [{key:0,val:"0000"},{key:1,val:"0001"},{key:2,val:"0010"},{key:3,val:"0011"},{key:4,val:"0100"},{key:5,val:"0101"},{key:6,val:"0110"},{key:7,val:"0111"}, {key:8,val:"1000"},{key:9,val:"1001"},{key:'a',val:"1010"},{key:'b',val:"1011"},{key:'c',val:"1100"},{key:'d',val:"1101"},{key:'e',val:"1110"},{key:'f',val:"1111"}] let value="" for(let i=0;i<str.length;i++){ for(let j=0;j<hex_array.length;j++){ if(str.charAt(i).toLowerCase()== hex_array[j].key){ value = value.concat(hex_array[j].val) break } } } console.log(value) return value }
二进制转十六进制 (本次转换的方法没有考虑带小数点的情况)
function bin_to_hex(str) { let hex_array = [{key:0,val:"0000"},{key:1,val:"0001"},{key:2,val:"0010"},{key:3,val:"0011"},{key:4,val:"0100"},{key:5,val:"0101"},{key:6,val:"0110"},{key:7,val:"0111"}, {key:8,val:"1000"},{key:9,val:"1001"},{key:'a',val:"1010"},{key:'b',val:"1011"},{key:'c',val:"1100"},{key:'d',val:"1101"},{key:'e',val:"1110"},{key:'f',val:"1111"}] let value = '' let list=[] console.log(str) if(str.length%4!==0){ let a = "0000" let b=a.substring(0,4-str.length%4) str = b.concat(str) } console.log(str) while (str.length > 4) { list.push(str.substring(0, 4)) str = str.substring(4); } list.push(str) console.log(list) for(let i=0;i<list.length;i++){ for(let j=0;j<hex_array.length;j++){ if(list[i]==hex_array[j].val){ value = value.concat(hex_array[j].key) break } } } console.log(value) return value }
异或运算 (需要上面两个方法做基础)
function xor(a ,b){ let A = hex_to_bin(a) let B = hex_to_bin(b) console.log(a+" a的二进制:"+A) console.log(b+" b的二进制:"+B) let o = "00000000000000000000000000000000000" if(A.toString().length > B.toString().length){ let c = A.toString().length - B.toString().length B = o.substr(0,c).concat(B) }else if(A.toString().length < B.toString().length){ let c = B.toString().length - A.toString().length A = o.substr(0,c).concat(A) } console.log('B:'+B) console.log('A:'+A) let d = "" for(let i=0;i<A.toString().length;i++){ if(A.toString()[i]==B.toString()[i]){ let q="0" d = d.concat(q) }else{ let p="1" d = d.concat(p) } } console.log(bin_to_hex(d)) return bin_to_hex(d) }
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/lixiwoaini/article/details/82179094
-
将一个长度超过100位数字的十进制非负整数转换为二进制数(大数据处理)
2012-07-14 10:22:46已迁往:http://www.wypblog.com/archives/141题目描述:将一个长度超过100位数字的十进制非负整数转换为二进制数输出。输入:多组数据,每行为一个长度不超过30位的十进制非负整数。(注意是10进制数字的个数可能有...已迁往:http://www.iteblog.com/archives/141
题目描述:
将一个长度超过100位数字的十进制非负整数转换为二进制数输出。
- 输入:
多组数据,每行为一个长度不超过30位的十进制非负整数。
(注意是10进制数字的个数可能有30个,而非30bits的整数)
- 输出:
每行输出对应的二进制数。
- 样例输入:
0 1 3 8
- 样例输出:
0 1 11 1000
分析:这个数不应该存储到一个int类型变量里面去,同样和前几篇帖子一样,也是用向量来处理,处理出的结果用binary存储,最后输出就是我们要的结果
C++代码如下:
运行结果:// w397090770 // wyphao.2007@163.com // 2012.07.14 #include <iostream> #include <string> #include <vector> using namespace std; //convert decimal to Binary void dec2bin(string s){ int sum(0); vector<char>v; int i, j; string binary; char ch; //把每一位存到v里面去 for(int i(s.length() - 1); i >= 0; --i){ v.insert(v.begin(), s[i] - '0'); } //计算二进制 while(1){ j = v.size() - 1; ch = v[j] % 2 + '0'; binary.insert(binary.begin(), 1, ch); for(sum = 0, i = 0; i <= j; i++){ if(i < j){ //v[i + 1] += (v[i] % 2) * 10; v[i + 1] += (v[i] - ((v[i] >> 1) << 1)) * 10; } //v[i] /= 2; v[i] >>= 1; sum += v[i]; } if(sum == 0){ break; } } cout<< binary <<endl; } int main(){ string dec; while(cin>>dec){ dec2bin(dec); } return 0; }
我在网上搜索了一下,看到有人用java写了一个版本,函数很简单:如下:
结果:import java.math.BigInteger; import java.util.Scanner; public class Q1138 { public static void main(String[] args) { Scanner cin = new Scanner(System.in); while(cin.hasNext()){ System.out.println(new BigInteger(cin.next()).toString(2)); } } }
从上面看出,java语言的确很方便,很强大,但是java代码运行时间明显要比C++实现的要长。
(转载请注明:http://www.iteblog.com/archives/141,请不要用于商业目的。)
-
十进制转二进制
2021-01-23 17:05:58将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入描述: 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数) 输出描述: 每行...题目描述
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
输入描述:
多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数)
输出描述:
每行输出对应的二进制数。
示例1
输入
0 1 3 8
输出
0 1 11 1000
注意
① 本题输入的数可能多达30多位,因此无法用整型数来保存该题输入,只能用字符串来模拟
② 对于取模运算,可以将其转换为对字符串最低数位进行取模运算
③ 对于整除运算,则需要重新写一个函数来模拟:
把字符串从高到低逐位除以除数,保留余数,余数乘以10后和低一位一起进行处理。(可能会前置多余的0,这时只需取首个非0位之后的字符串)
代码
#include<iostream> #include<cstdio> #include<string> #include<vector> using namespace std; string divide(string str,int x)//字符串除法 { int remainder = 0; //保留余数 for(int i=0;i<str.size();i++) { int current =remainder*10+str[i]-'0'; str[i]=current/x+'0'; remainder=current % x; } int pos=0; while(str[pos]=='0')//寻找首个非0下标 pos++; return str.substr(pos);//删除前置多余的0 } int main() { string str; while(cin>>str) { vector<int> binary; while(str.size()!=0) { int last=str[str.size()-1]-'0';//最低位的值 binary.push_back(last%2);//取模运算 str=divide(str,2);//整除运算 } for(int i=binary.size()-1;i>=0;i--) cout<<binary[i]; cout<<endl; } return 0; }
-
十进制转化为二进制
2021-01-12 18:56:36输入1个无符号的十进制整数,将其转换成二进制,并输出。(10分) 题目内容: ...二进制数每8位数字后空一格,不足16位补0,行末没有空格。 输入样例: 765 输出样例: 00000010 11111101 #include&输入1个无符号的十进制整数,将其转换成二进制,并输出。(10分)
题目内容:
从键盘输入1个小于65536的无符号的十进制整数,将其转换成16位二进制,并输出。
具体要求完成的功能如下:
1)如输入负数,则输出 “数据小于0”
2)如超过65535,则输出“超过最大数”
3)输出转换过的16位二进制数;
输入格式:
输入一个小于65536的正整数
输出格式:
二进制数每8位数字后空一格,不足16位补0,行末没有空格。
输入样例:
765
输出样例:
00000010 11111101
#include<stdio.h> int main(){ int a[16]={0},m,i,time;//数组会往后补0,但是不会往前 scanf("%d",&m);//输入一个整数m if(m>=0&&m<=65535) { time=0; while(m!=0){ time++; if(m%2==1){ a[16-time]=1; } else if(m%2==0){ a[16-time]=0; } m=m/2;//用除二法对十进制数进行转化 } for(i=0;i<=7;i++) { printf("%d",a[i]); } printf(" "); for(i=8;i<16;i++) { printf("%d",a[i]); } } else if(m<0) printf("数据小于0"); else printf("超过最大数"); return 0; }
-
用Python将任意不超过10位长度的二进制数字转换为十进制(源码分享)
2019-01-21 15:22:35请输入需要转换为十进制的二进制数字" s1 = str(raw_input()) isBanary = "yes" #记录键盘输入所映射的ASCII码,以免布尔值影响计算 key_down = [] for ele in s1:... -
C++程序练习-3249:进制转换-30位十进制转二进制数-优化
2011-07-27 13:55:00将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数) 输出 每行输出对应的二... -
进制转换(十进制大数转二进制)
2019-08-23 19:54:40将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入描述: 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数) 输出描述: 每行... -
进制转换(大数十进制转化成二进制)
2018-03-15 10:44:25题目描述将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。输入描述:多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数)输出描述:每行... -
LeetCode 190.Reverse Bits(颠倒二进制位)
2019-02-03 11:41:36思路:我采用的IDE是Java,在Java中二进制转为int是对二进制求补码(在Java中都是有符号数),同理int转byte就是补码的逆运算,例如8位的二进制的范围就是-128~127,如果对字节的赋值超过这个范围编译器就会报错。... -
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出 c语言 大数处理
2021-02-07 18:02:36将一个长度最多为30位数字的十进制非负整数转换为二进制数输出 输入描述: 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数) 输出描述: 每行输出对应... -
Python输入一个255以内的正整数,输出对应的8位二进制形式。要求粘贴代码及运行结果。
2020-11-17 19:57:13输入一个不超过8位的二进制数(整数),输出对应的十进制形式。要求粘贴代码及运行结果。 -
计算机基础:二进制、八进制、十进制、十六进制
2008-07-24 12:10:00计算机基础:二进制、八进制、十进制、十六进制2006-11-29 20:23一、十进制数 十进制数是日常生活中使用最广的计数制。组成十进制数的符号有0,1,2,3,4,5,6,7,8,9等共十个符号,我们称这些符号为数码。 在... -
牛客网 C语言上机刷题 大数的十进制转二进制
2020-04-11 14:49:55将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入描述: 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数) 输出描述: 每行... -
【牛客刷题】 进制转换 30位输入
2020-08-07 22:25:16将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入描述: 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数) 输出描述: 每行输出... -
C实现二进制乘法
2014-12-14 12:05:001 /* 2 二进制乘法 3 */ 4 #include <stdio.h> ... 6 #define LEN 64 //因子二进制位数的两倍,32位乘法结果不会超过64位 7 8 int main() 9 { 10 unsigned int a = 0x13131... -
leetcode190——颠倒二进制位(移位符)
2021-01-12 16:32:50有符号:由负值和正值组成,但格式不同,例如关于8位数字系统中0 ~ 127,-1 ~ -128 无符号的可以具有较大的正值,而不能为负值。unsigned使用前导位作为值的一部分,而signed版本使用最左边的位来标识数字是正数... -
负数二进制表示的方式及原因
2019-07-19 17:25:07取负数的得绝对值用二进制表示,对该二进制取反码(即二进制的每位都取相反的数值),得到反码后+1,即是补码,也就是该负数二进制的表示方式。 计算机的数值范围2^n次,n为计算机的位数,超过范围会自动清除一轮的... -
Java 把一个int数字转换成特定位数二进制的字符串
2021-01-12 17:29:18首先明确一点,我想要的结果是这个数字经过进制转换得到一个二进制数组,且最长不超过n位。这里的n是可以调的,下面给出n=8时的例子。 public static String binaryString(int num) { StringBuilder result = ... -
百练_3249大数二进制转换
2017-04-18 19:45:04将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。 输入 多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数) 输出 每行输出对应的二... -
8进制字符串转16进制字符串(二)
2014-10-25 15:44:09//写一个函数实现8进制字符串到16进制字符串的转换 //例如: //输入"755"结果是"1ED" //输入"777777777777"结果是"FFFFFFFFF" (注意超过了32位) //答案2 //使用位段定义 ... //表示一位8进制数 unsig -
二进制知识
2011-05-17 22:24:50在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为(100000000),进位1被丢弃。 ⑴一个数为正,则它的原码、反码、补码相同 ⑵一个数为负,刚符号位为1,其余各位是... -
MOOC输入1个无符号的十进制整数,将其转换成二进制,并输出。(10分)
2020-06-07 23:51:19题目内容: 从键盘输入1个小于65536的无符号的十...二进制数每8位数字后空一格,不足16位补0,行末没有空格。 输入样例: 765 输出样例: 00000010 11111101 时间限制:500ms内存限制:32000kb #include <stdi -
leetcode刷题之二进制手表
2020-06-18 16:46:28二进制手表题目解题思路代码提交结果反思 题目 示例: 输入: n = 1 返回: ["1:00", "2:00", "4:00", "8:00", "0:01", "0:02", "0:04", "0:08", "0:16", "0:32"] 提示: 输出的顺序没有要求。 小时不会以零开头,... -
蓝桥杯基础练习16进制转换成8进制
2017-12-30 14:36:06基础练习 十六进制转十进制 时间限制:1.0s 内存限制:512.0MB 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C... -
m位二进制数,1个数不超过n,字典序排下第i个数
2012-12-10 20:15:06题目:给定m位字符串数组S,由0和1组成,要求m位中1的个数不超过n,然后找到字典序的第i个数。如:如 m=4 n=2 即1的个数不超过2个 0111就不行,如果找第i=8个 从0000 0001 …… 0110 1000 。第八个就是1000 。写一个... -
二进制格式化工具类
2012-01-19 15:32:14/** * 格式化工具类 * * @author gembler * @version 2008-12-3 下午03:01:50 */ public class FormatUtil { ...默认取8位,超过则截取,不足则补零。 * 格式:“00000000”,与NumberFormat的pattern:“#
-
pdf是图片还是文档
-
MxsDoc运行环境(Windows)
-
鸿蒙系统Harmonyos源码架构分析-第1期第2课
-
PlutoniumEnergy:用于Factorio的Plutonium Energy mod-源码
-
cadence_allegro_查看dra文件所用pad_查看封装文件用的引脚列表
-
2021-02-27
-
移动手机用户体验的三个层次
-
zapata:自动执行的自动测试编写器-源码
-
使用vue搭建微信H5公众号项目
-
平面型四光纤耦合系统的研究
-
用微服务spring cloud架构打造物联网云平台
-
axios学习优化及使用
-
Prisma初体验【逆向生成数据模型】
-
51单片机60秒倒计时 数码管显示
-
牛牛量化策略交易
-
PHP——个人信息管理系统
-
比特币原理详解
-
nlp3
-
MySQL你该了解的那些事【服务端篇】
-
抛砖引玉:一种改善微信云开发 , 开发者体验的思路