精华内容
下载资源
问答
  • 输出二进制补码

    千次阅读 2014-05-23 18:17:08
    * 2:输出二进制补码 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 输入若干int型整数,输出每个整数的二进制补码。 输入 输入有若干行,除最后一行外,每行包含一个int型整数。最后一行仅包含...
    /*
     * binaries.cpp
     *
     *  Created on: 2014-5-22
     *      Author: 
     *      2:输出二进制补码
    查看 提交 统计 提问
    总时间限制: 1000ms 内存限制: 65536kB
    描述
    输入若干int型整数,输出每个整数的二进制补码。
    
    输入
    输入有若干行,除最后一行外,每行包含一个int型整数。最后一行仅包含一个不定的字母,标志着输入结束。我们保证输入的整数不超出int型变量的表示范围
    输出
    个输入的整数,输出一行,即该整数的补码表示。
    样例输入
    1
    7
    200
    -45
    h
    样例输出
    00000000000000000000000000000001
    00000000000000000000000000000111
    00000000000000000000000011001000
    11111111111111111111111111010011
     */
    #include<stdio.h>
    #include<stdlib.h>
    void out(int n,int l){
    	for (int i=31;i>=0;i--)
    		printf("%d",(n&(1<<i))!=0);
    }
    int main(){
    	char s[16];
    	for (;scanf("%s",s)&&((s[0]>='0'&&s[0]<='9')||s[0]=='-');out(atoi(s),31),printf("\n"));
    	return 0;
    }
    

    展开全文
  • 35:输出二进制补码

    2017-03-17 20:20:00
    35:输出二进制补码 查看 提交 统计 提问 总时间限制:1000ms内存限制:65536kB描述 输入一个整型(int)的整数,输出它的32位二进制补码。 输入一个整型整数。输出输出一行,即该整数的补码表示。样例...

    35:输出二进制补码

    总时间限制: 
    1000ms
    内存限制: 
    65536kB
    描述

    输入一个整型(int)的整数,输出它的32位二进制补码。

    输入
    一个整型整数。
    输出
    输出一行,即该整数的补码表示。
    样例输入
    7
    样例输出
    00000000000000000000000000000111‘

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int a[10001];
     5 int now;
     6 int main()
     7 {
     8     int n;
     9     cin>>n;
    10     for(int i=31;i>=0;i--)
    11     {
    12         cout<<((n>>i)&1);
    13     }
    14     return 0;
    15 }

     

    转载于:https://www.cnblogs.com/zwfymqz/p/6568183.html

    展开全文
  • 【进制转换】35:输出二进制补码

    千次阅读 2018-05-18 22:40:52
    35:输出二进制补码总时间限制: 1000ms内存限制: 65536kB描述输入一个整型(int)的整数,输出它的32位二进制补码。输入一个整型整数。输出输出一行,即该整数的补码表示。样例输入7样例输出...

    35:输出二进制补码

    总时间限制: 
    1000ms
    内存限制: 
    65536kB
    描述

    输入一个整型(int)的整数,输出它的32位二进制补码。

    输入
    一个整型整数。
    输出
    输出一行,即该整数的补码表示。
    样例输入
    7
    样例输出
    00000000000000000000000000000111














    首先明确几个概念:

    原码:


    如果机器字长为n,那么一个数的原码就是用一个n位的二进制数,其中最高位为符号位:正数为0,负数为1。剩下的n-1位表示概数的绝对值。

    例如: X=+101011 , [X]原= 00101011    X=-101011 , [X]原= 10101011 
    位数不够的用0补全。

    PS:正数的原、反、补码都一样:0的原码跟反码都有两个,因为这里0被分为+0和-0。

    反码:

    知道了什么是原码,那反码就更是张飞吃豆芽——小菜一碟了。知道了原码,那么你只需要具备区分0跟1的能力就可以轻松求出反码,为什么呢?因为反码就是在原码的基础上,符号位不变其他位按位取反(就是0变1,1变0)就可以了。


    例如:X=-101011 , [X]原= 10101011 ,[X]反=11010100


    补码:


    补码也非常的简单就是在反码的基础上按照正常的加法运算加1。


    例如:X=-101011 , [X]原= 10101011 ,[X]反=11010100,[X]补=11010101


    PS:0的补码是唯一的,如果机器字长为8那么[0]补=00000000。

    然后,我们分类讨论输入的数,分三类:0,正数、负数。

    负数的时候注意一下规范写法,不然容易个别样例过不了。

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    int ans[32];
    int two[32];
    int main(){
    	memset(ans,0,sizeof(ans));
    	memset(two,0,sizeof(two));
    	int a;
    	scanf("%d",&a);
    	if(a==0){
    		for(int i=0;i<32;i++){
    			printf("%d",ans[i]);
    		}
    	}else if(a>0){
    		int size=0;
    		do{
    			two[size++]=a%2;
    			a/=2;
    		}while(a!=0);
    		for(int i=0;i<size;i++){
    			ans[31-i]=two[i];
    		}
    		for(int i=0;i<32;i++){
    			printf("%d",ans[i]);
    		}
    	}else{
    		a=a*(-1);
    		int size=0;
    		do{
    			two[size++]=a%2;
    			a/=2;
    		}while(a!=0);
    		for(int i=0;i<size;i++){
    			ans[31-i]=two[i];
    		}
    		for(int i=1;i<32;i++){
    			ans[i]=1-ans[i];
    		}
    		ans[0]=1;
    		for(int i=31;i>0;i--){
    			if(ans[i]==1){
    				ans[i]=0;
    			}else{
    				ans[i]=1;
    				break;
    			}
    		}
    		for(int i=0;i<32;i++){
    			printf("%d",ans[i]);
    		}
    
    
    	}
    }

    展开全文
  • 输出二进制补码问题

    2020-04-13 22:39:34
    蒜头君有一个 int\text{int}int 的整数,输出它的 323232 位二进制补码。 输入格式 一个整型整数。 输出格式 输出一行,即该整数的补码表示。 输出时每行末尾的多余空格,不影响答案正确性 样例输入: 7 样例输出 ...

    这道题看百度上的题解把我看蒙了,想了半天没想通,直到我看见在计算机中负数是用补码来表示的,我才恍然大悟,咋把这个给忘了(抓狂)

    题目

    蒜头君有一个 int\text{int}int 的整数,输出它的 323232 位二进制补码。

    输入格式

    一个整型整数。

    输出格式

    输出一行,即该整数的补码表示。

    输出时每行末尾的多余空格,不影响答案正确性

    样例输入:

    7

    样例输出

    00000000000000000000000000000111

    分析:

    做这道题就是明白一点:计算机中负数用补码来表示,因为整数补码是本身,所以这道题其实就是输出一个数在计算机中的二进制形式,超级简单了

    code

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int map1[110][110],map2[110][110];
    int main()
    {
      int n;
      cin>>n;
      for(int i=31;i>=0;i--){
        cout<<((n>>i)&1); //输出这一位的数
      }
    }
    

    补充

    传送门

    %i的作用

    %i和%d区别在scanf中,%i功能更强大,能根据输入的形式转换成十进制并赋值给变量,比如下面程序:

    int n;
      scanf("%i",&n);
      cout<<n;
    }
    

    输入0X10,输出16,输入0010输出8(八进制)

    c语言不能直接表示二进制,没有数字前缀表示

    itoa函数

    传送门

    C语言中可以用%o %d/%i %x输出8 10 16进制的数但是没有二进制的输出字符,但是有itoa的函数,

    注意: 计算机中负数用补码表示,所以itoa函数求出的负数也是补码形式

    函数原型:

    char *itoa( int value, char *string,int radix); [1] 
    原型说明:
    value:欲转换的数据。
    string:目标字符串的地址。
    radix:转换后的进制数,可以是10进制、16进制等。
    

    参考代码:

    1

    #include <stdlib.h>
    #include <stdio.h>
    int main(void)
    {
        int number = 12345;
        char string[32];
        itoa(number, string, 10);
        printf("integer = %d string = %s\n", number, string);
        return 0;
    }
    

    2

    /* itoa example */
    #include <stdio.h>
    #include <stdlib.h>
    int main (){
        int i;
        char buffer[33];
        printf ("Enter a number: ");
        scanf ("%d",&i);    //输入整数i
        itoa (i,buffer,10);    //将i转化为10进制数,存到buffer中
        printf ("decimal: %s\n",buffer);    //输出打印buffer
        itoa (i,buffer,16);    //将i转化为16进制数,存到buffer中
        printf ("hexadecimal: %s\n",buffer);    //输出打印buffer
        itoa (i,buffer,2);    //将i转化为2进制数,存到buffer中
        printf ("binary: %s\n",buffer);    //输出打印buffer
        return 0;}
    OUTPUT:
    Enter a number: 1750
    decimal: 1750
    hexadecimal: 6d6
    binary: 11011010110
    

    注意事项

    itoa() 函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数(进制)。在上例中,转换基数为10,就意味着以10为转换进制。10:十进制;2:二进制…

    itoa 并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。

    标准库中有sprintf,功能比这个更强,用法跟printf类似:

    char str[255];

    sprintf(str, “%x”, 100); //将100转为16进制表示的字符串。

    下列函数也可以将相应类型的整数转换为字符串:

      将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数
      char *ltoa(long value,char *string,int radix)
      将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数
      char *itoa(int value,char *string,int radix)
      将整数value转换成字串存入string,radix为转换所用基数.
      double atof(char *nptr)
      将字符串nptr转换成双精度数,并返回这个数,错误返回0
      int atoi(char *nptr)
      将字符串nptr转换成整型数, 并返回这个数,错误返回0
      long atol(char *nptr)
      将字符串nptr转换成长整型数,并返回这个数,错误返回0
      double strtod(char *str,char **endptr)
      将字符串str转换成双精度数,并返回这个数,
      long strtol(char *str,char **endptr,int base)
      将字符串str转换成长整型数, 并返回这个数
    

    ok,又11点多了,哎!啥也不是

    展开全文
  • 蒜头君有一个 int 的整数,输出它的 32 位二进制补码。 输入格式 一个整型整数。 输出格式 输出一行,即该整数的补码表示。 输出时每行末尾的多余空格,不影响答案正确性 样例输入 7 样例输出 ...
  • #include using namespace std; void bi(int, int, bool); int main() { int n; while (cin >> n) { if (n >= 0) bi(n, 32, 1); else bi(~n, 32, 0); cout ; } return 0;...void bi(int n
  • 测试链接 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个整型(int)的整数,输出它的32位二进制补码。 输入 一个整型整数。 输出 输出一行,即该整数的补码表示。 样例输入 7 样例输出 ...
  • 一 问题描述 给定任一整型值,输出二进制补码(即机器码)。二 求解思路 整型值在机器中正是以二进制补码存放,在JAVA中,用print函数输出的是其十进制形式。&运算符会将两边的操作数按其二进制形式逐个bit求与,...
  • YANGLIN@BNUITC Java程序设计 第18章 二进制I/O 学习目标 理解输入和输出流 理解字节流和字符流 掌握使用文件流读写文件 掌握缓冲流 了解数据流 掌握对象流和对象序列化 了解RandomAccessFile 输入输出 java.io包以...
  • 我刚开始学习java,学完“结构化程序设计”章节后,遇到了一道题,如下:“完成下面的通用程序,要求能够输出给定整数i的二进制补码。 public class Example { public static void main(String args[]) { ...
  • 汇编8086实现 输入一个二进制补码数,输出其对应的十进制数。跪求大神,源码!跪谢!
  • 二进制补码

    2013-08-04 10:56:00
    计算机只能处理2进制数据(经常是补码!),计算机内部没有10... 计算机不认识正负数,所以原本二进制是没有负数的,但因为运算需要,正负二进制是人为规定的,所以才有了补码(补充的码)。  计算机在输入输出...
  • 原来不用那么复杂了 有直接的方法这个有点复杂 http://nobelking.blog.51cto.com/7607139/1376701 转载于:https://blog.51cto.com/nobelking/1376737
  • matlab中十进制转换成二进制补码

    千次阅读 2018-11-25 17:27:03
    x=-100; q = quantizer([16,0]); y = num2hex(q,x) y = ff9c ...quantizer是matlab中的量化器,用来生成量化的参数。上面代码中16为输出字长,0为小数位字长,生成的y是一个长度为16的向量。...
  • 以下程序针对二进制补码算术中整数的算术运算问题,要求先确定一个bit pattern size ,然后第一个函数要把输入的两个整数转化为二进制输出,第二个函数把两个二进制数相加输出,第三个函数再把结果转化回十进制。...
  • 正数的原码、补码均是其本身; 负数的补码是原码的符号位不变,其他位取反,补码是原码+1; Java.out.println(Integer.toBinaryString(var)) 打印的是实参的二进制补码 ...
  • 二进制补码运算(转)

    千次阅读 2011-07-13 11:32:53
    在数字电路中是用逻辑电路输出的高、低电平表示二进制数的1和0的。那么数的正、负又如何表示呢?通常采用的方法是在二进制数的前面增加一位符号 位。符号位为0表示这个数是正数,符号位为1表示这个数是负数。...
  • 实验二:8位带符号二进制补码扩展16位 日期:2019年11月27日 实验报告内容: 实验目的 掌握机器指令的结构编程方法,程序的调试方法。 实验性质 综合性 实验内容 程序输入:8位2的补码数。在程序启动之前,这个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,457
精华内容 982
关键字:

输出二进制补码