C语言【进制转换】35:输出二进制补码

这篇具有很好参考价值的文章主要介绍了C语言【进制转换】35:输出二进制补码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

35:输出二进制补码

总时间限制: 

1000ms

内存限制: 

65536kB

描述

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

输入

一个整型整数。

输出

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

样例输入

7

样例输出

00000000000000000000000000000111

代码实现:

#include<stdio.h>
int main()
{
    int num;
    scanf("%d",&num);
    int i;
    for(i=31;i>=0;i--)
    {
        if((num&(1<<i))!=0)
            printf("1");
        else
            printf("0");
    }
    return 0;
}

首先要明白 &(按位与)和 << (左移)的用法

&规则:

1&1=1

1&0=0

0&1=0

0&0=0

左移规则:

原始二进制:00001

左移1位后: 00010

左移2位后: 00100

以此类推,左移后右边末尾补0,左边溢出的二进制舍去,符号位按编译器有算术和逻辑两种情况变化,这里不详细讲解。

num=7

num的二进制是  :            00000000000000000000000000000111

数字1左移0位的二进制是:00000000000000000000000000000001

num&1后,只有最低位位置上为1时转化后为1

转化后二进制是 :              00000000000000000000000000000001

c语言输出补码的代码,算法,c语言

 

这个二进制代表的值不为0,打印1

然后1左移1位后:

num的二进制是  :           00000000000000000000000000000111

数字1左移1的二进制是:  00000000000000000000000000000010

转化后的二进制是:          00000000000000000000000000000010

c语言输出补码的代码,算法,c语言

 

值不为0,打印1

最终1左移31位后

num的二进制是  :           00000000000000000000000000000111

数字1左移31后二进制是:10000000000000000000000000000000

转化后的二进制是:          00000000000000000000000000000000

c语言输出补码的代码,算法,c语言

 

值为0,打印0

因为先打印的是二进制的最高位,所以要从左移31位开始到左移0位

可以看出,当补码上某位二进制是1时,才会打印1,否则打印0

最终打印出来的二进制为:00000000000000000000000000000111

因为正数和负数进行左移和按位与运算时的二进制是补码,所以负数和正数的代码统一。文章来源地址https://www.toymoban.com/news/detail-733953.html

到了这里,关于C语言【进制转换】35:输出二进制补码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Golang】补码二进制字符串转整型

     在计算机科学中,原码、反码和补码是用来表示有符号整数的三种不同的二进制编码方式。下面将详细解释每一种编码方式的特点和用途。 原码  原码是最直观的有符号数表示方法。在原码表示法中,最高位(符号位)用来表示数的正负,0表示正数,1表示负数。正数的原

    2024年01月21日
    浏览(70)
  • 关于分数的二进制原反补码的求解

    求-53/64的原反补;

    2024年02月07日
    浏览(38)
  • 【C语言】十进制(正负)与二进制(正负)互相转换的方法技巧:短除法、取反、按位乘……

    导读 :二进制数最高位为符号位,0表示正数、1表示负数 1、正数:短除法,然后将所有0、1从上到下连起来从右至左摆放,不够八位数的左边补0 【例】将十进制数60、13转为二进制: 2 | 60 ‾ underline{text{60}} 60 ​                               2 | 13 ‾ underl

    2023年04月10日
    浏览(59)
  • [ARM汇编]计算机原理与数制基础—1.1.3 二进制补码

    在计算机中,为了表示有符号整数(即正数和负数),通常采用二进制补码表示法。二进制补码不仅可以表示负数,还能简化计算机的加法和减法运算。接下来,我们将介绍二进制补码的概念及其计算方法。 原码、反码和补码 在讨论补码之前,我们先了解一下原码和反码的

    2024年02月08日
    浏览(53)
  • 【C语言】输入一个十进制正整数,将它对应的二进制数的各位逆序,形成新的十进制数输出。题目分析及拓展应用。

    目录 一.题目及答案 二.对该题目的分析及详解 三.对该题的举一反三 1.将十进制数对应的n进制数各位逆序,形成新的十进制输出 2.将十进制数转换成相应的n进制数输出 如图, 题目及答案如下 :  该程序 完整代码如下 (需要可自由复制): 以下是对该程序的分析: 先来看

    2024年02月05日
    浏览(62)
  • 二进制与十进制的转换【相互转换, C++】

    二进制转十进制: 以字符串的形式读入二进制串。 获得该字符串的位数,即二进制的最高位是多少。 从左往右遍历 == 从高位往低位展开! 核心:按权展开,按位相加。 代码: 十进制转换为二进制: 思路: 十进制转化为 x x x 进制采用的是除 x x x 取余法(从下往上取余数

    2024年02月12日
    浏览(64)
  • Python中二进制十进制转换

            hello大家好,今天我想和大家分享一下在Python中进制转换加减法的方法。         比如现在我们需要求100 + 10,然后需要将结果110以二进制的形式返回,又或者我们现在有一个小需求,就是要计算二进制1010和二进制1011的和是多少,然后依旧以二进制的形式返回

    2024年02月16日
    浏览(63)
  • 【华为OD机试真题 C++语言】101、二进制差异数 | 机试真题+思路参考+代码解析

    🍂个人博客首页: KJ.JK   🍂专栏介绍: 华为OD机试真题汇总,定期更新华为OD各个时间阶段的机试真题,每日定时更新,本专栏将使用C++语言进行更新解答,包含真题,思路分析,代码参考,欢迎大家订阅学习 🎃题目描述 对于任意两个正整数A和B,定义它们之间的差异值和

    2024年02月15日
    浏览(37)
  • 【Python 千题 —— 基础篇】进制转换:十进制转二进制

    题目描述 计算机底层原理中常使用二进制来表示相关机器码,学会将十进制数转换成二进制数是一个非常重要的技能。现在编写一个程序,输入一个十进制数,将其转换成二进制数。 输入描述 输入一个十进制数。 输出描述 程序将输入的十进制数转换为二进制数,并输出其

    2024年02月07日
    浏览(81)
  • C++十进制与二进制之间的转换

    一般采用\\\"除2取余,逆序排列\\\"法: 也就是将一个十进制数不断除2,将每次得到的余数倒序从后向前排列。 拿求救信号6举个例子: 6/2=3……0  末位就是0 3/2=1……1   前一位就是1 1/2=0……1  再前一位就是1 再画个图辅助理解,这回试试100: 所以100的二进制表达就是1100100 那用

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包