-
2020-12-03 00:09:28
下面以15为例子输出1111
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> void decToBin(int n)//输入一个数15 { int result = 0;//结果 int k = 1; int i = 0; while(n)//除到0就停止 { i = n % 2; //余数i=1 //i=1 //i=1 //i=1 result = k * i + result; //result=1 //result=11 //result=111 //result=1111 k = k * 10; //k=10 //k=100 //k=1000 n = n / 2; //n=7 //n=3 //n=1 //n=0退出 } printf("%d \n",result);//1111 } int main() { int n; scanf("%d", &n); decToBin(n); }
更多相关内容 -
vb题将十进制正整数转换为二进制.txt
2021-03-21 12:56:11vb题将十进制正整数转换为二进制.txt -
将整数转换为二进制或将二进制转换为整数:将整数的列向量转换为二进制的列向量,反之亦然-matlab开发
2021-05-28 22:40:36例子: int2bin([2; 5; 15])= [0 0 1 0; 0 1 0 1; 1 1 1 1] 或者bin2int([0 1 1; 2 2 2],3)= [4; 26](在三位数系统中) -
整数转换为二进制
2020-04-16 21:37:41刷 二进制中1的个数 时,遇到该基础问题,故整理...1、正整数转二进制 除2之后将余数倒序排列 2、负整数转二进制 1)得到取绝对值的整数的二进制。如-201,先得到201的二进制1001001 2)取反。得0110110 ...刷 二进制中1的个数 时,遇到该基础问题,故整理一下。
感谢参考链接:https://jingyan.baidu.com/article/84b4f565cf33fe60f6da321b.html
1、正整数转二进制
除2之后将余数倒序排列, 直到商小于1
201 / 2 = 100······1
100 / 2 = 50 ······0
50 / 2 = 25 ······0
25 / 2 = 12 ······1
12 / 2 = 6 ······0
6 / 2 = 3 ······0
3 / 2 = 1 ······1
1 / 2 = 0 ······1 (商小于1,结束计算并将余数倒序排列)
得到:201(十进制) = 11001001(二进制)
2、负整数转二进制
1)得到取绝对值的整数的二进制。 如 -201,先得到201的二进制11001001
2)取反。得00110110
3)加1。 得00110111
3、小数部分转二进制
1)小数部分乘2后将整数部分顺序排列。 如0.125,整数部分顺序排列得001
2)前面加0. 得0.001
题外话:
回到前面所说的二进制中1的个数。
由于计算机存储数据用的是补码。首位是符号位。
为什么这么存储呢?参考 https://www.cnblogs.com/spring-hailong/p/6071245.html
所以就会出现对负数右移(eg: n = n>>1),因为最高位补1,一直循环的情况。
参考 https://www.cnblogs.com/kaituorensheng/p/3642116.html
所以才会有人在右移前要判断是否为负,负数通过
n &
0x7FFFFFFF
将符号位改为0。得到题解:
class Solution { public: int NumberOf1(int n) { int count = 0; if(n < 0){ n = n & 0x7FFFFFFF; ++count; } while(n != 0){ count += n & 1; n = n >> 1; } return count; } };
当然也可以用 n= n>>>1,无视符号位右移,避免判断。
但一山更比一山高,有更聪明的人提出左移不就好了。
计算机中二进制左移末尾补0,最后会出现0的情况,这样就不会有上述死循环的问题了,便得到题解
private static int NumberOf1_low(int n) { int count = 0; int flag = 1; while (flag != 0) { if ((n & flag) != 0) { count++; } flag = flag << 1; } return count; }
最高级的就是下面这种了
//把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0. int NumberOf1(int n) { int count=0; while(n){ count++; n=n&(n-1); } return count; }
以上代码来自牛客网大佬
-
java代码-2.任意给出一个十进制整数,将十进制整数转换为二进制数。
2021-07-14 19:59:20java代码-2.任意给出一个十进制整数,将十进制整数转换为二进制数。 -
java代码-任意给出一个十进制整数,将十进制整数转换为二进制数
2021-07-14 20:20:31java代码-任意给出一个十进制整数,将十进制整数转换为二进制数 -
十进制大整数转化为二进制输出
2021-06-10 17:55:22其实只要我们理解了十进制整数转化为二进制的方法,那么相对大数来讲,思路还是一样的。 #include <stdio.h> #include <string.h> int main(){ char m[32]; int len; while(scanf("%s",&m)!=EOF)...相信一般整数的进制转换大家都会,那么大整数数转换为二进制怎么去做呢?根本存不下,只能用字符串来表示。
其实只要我们理解了十进制整数转化为二进制的方法,那么相对大数来讲,思路还是一样的。
#include <stdio.h> #include <string.h> int main(){ char m[32]; int len; while(scanf("%s",&m)!=EOF){ len=strlen(m); int sum=1,size=0; char n[100]; while(sum){ sum=0; for(int i=0;i<len;i++){ int x=m[i]-'0'; int d=x/2; sum+=d; if(i<len-1){ m[i+1]=x%2*10+m[i+1]; } if(i==len-1){ n[size++]=x%2+'0'; } m[i]=d+'0'; } } for(int i=size-1;i>=0;i--){ printf("%c",n[i]); } printf("\n"); } return 0; }
-
java代码-任意给出一个十进制整数,将十进制整数转换为二进制数。
2021-07-16 16:42:10java代码-任意给出一个十进制整数,将十进制整数转换为二进制数。 -
hadoop2面试题 - 将一个长度超过100位数字的十进制非负整数转换为二进制数(大数据处理).pdf
2016-08-09 17:51:32hadoop2面试题 - 将一个长度超过100位数字的十进制非负整数转换为二进制数(大数据处理).pdf -
java代码-求任意给出一个十进制整数,将十进制整数转换为二进制数。
2021-07-16 16:17:42java代码-求任意给出一个十进制整数,将十进制整数转换为二进制数。 -
C++中几种将整数转换成二进制输出的方法总结
2020-09-01 15:49:58下面小编就为大家带来一篇C++中几种将整数转换成二进制输出的方法总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
将整数转换为二进制
2019-01-07 20:17:12* 将整数转换成二进制 * @author hasee * */ public class TenToTwo { public static void main(String [] args) { Scanner input = new Scanner(System.in); System.out.println("请...import java.util.Scanner; /** * 将整数转换成二进制 * @author hasee * */ public class TenToTwo { public static void main(String [] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一个整数(系统将转成二进制):"); int num = input.nextInt(); //调用方法直接生成 System.out.println("调用API-->"+Integer.toBinaryString(num)); method(num); } //自定义算法 private static void method(int num) { if(num == 1 || num == 0) { System.out.print(num); }else{ method(num/2); System.out.print(num%2); } } }
-
运用数组将十进制整数转化为二进制
2021-11-06 21:18:49具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,一直进行,直到商为小于1时为止,然后把得到的余数倒序排列。 #include <stdio.h> int main() { int i = 0, ... -
matlab十进制整数转化为二进制原码、补码
2020-10-08 10:38:56整数转化为二进制原码 function y = dec2yuanma(x,N) %1<=N<=53 y=zeros(N,length(x)); for i=1:length(x) if x(i)<0 x(i)=2.^(N-1)-x(i); end d=flip(dec2bin(x(i))); b=zeros(N,1); -
十进制整数转化为二进制详解
2017-04-02 20:26:49要想编写十进制转化成二进制的带码首先要清楚十进制转化成二进制的算法,下面我们从两个方面实现这个转化: 1.按照十进制转化成十进制的常规算法实现: 废话不多说直接上图: -
Stack练习:: 十进制正整数转化成二进制
2019-03-05 01:20:59博文链接:https://baby69yy2000.iteye.com/blog/173051 -
C语言:任意一个整数转换为二进制数
2018-06-19 14:59:50#include "stdio.h"void decToBin();int main(){ decToBin(1024);}void decToBin(int n) { int len = sizeof(n) * 8; int temp; //进行循环取出每一位 for (int i = 0; i<len;... -
Python二级系列(一):将整数转化为二进制、八进制和十六进制(大写)
2020-08-22 14:57:34num = eval(input('请输入数字:')) print('对应的二进制数:{0:b}\n八进制数:{0:o}\n十六进制数: {0:X}'.format(num)) -
C语言--将十进制整数转化为二进制与十六进制输出
2021-05-22 15:25:42一:目的将十进制整数转化为二进制与十六进制输出。二:技术。1.利用for循环和数组知识将十进制转化为二进制输出。图片发自简书App2.利用for循环和数组知识将十进制转化为十六进制输出。图片发自简书App3.数组的定义,... -
将整数转化为二进制
2019-10-31 21:37:20问题(1.1.9):将正整数N用二进制表示,并转换为一个String类型的值s 【数学方法】 import java.util.*; public class NumTest { public static void main(String[] args) { System.out.println("输入要求的...