二进制的一些小问题

有些程序要处理二进制问题,每个位只包含0和1;标准库里面有个bitset类简化了 处理,使用方便

输入一个整数n

输出n的二进制,保证多少位,高位不够的话补0

#include<iostream>
#include<stdio.h>
#include<bitset>
#include<algorithm>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        bitset<16> a(n);     //bitset的声明,把10进制的数转化为二进制,位数为16位
        bitset<32> b(n);
        cout<<a<<endl;      //bitset的输出
        cout<<b<<endl;

        a.flip();          //把二进制按位取反
        cout<<a<<endl;

        //也可以转化为string类型的输出
        string t,s;
        t=b.to_string();
        cout<<t<<endl;

        //还可以把二进制的高位转化为低位,低位转化为高位
         s=t;
        reverse(s.begin(),s.end());
        cout<<s<<endl;

    }
    return 0;

}
时间: 2024-08-20 17:20:12

二进制的一些小问题的相关文章

Qt写的文件拆分和融合小工具

最近因事物需要,需要将大文件分解为几个小文件,然后就行传输,在接收端需要对接收到的小文件进行融合.因此用Qt写了这个小工具.现在奉献上这个小工具的代码和思路. 我们知道任何文件在计算机上都是二进制数据块,因此只需要使用读写二进制的形式来读取大文件,在将读取的大文件以二进制形式写入小文件,这样就可以将文件拆分了(当然这是非常简单的拆分方法,对有些文件肯定存在错误的,因为本人在这方面的知识很肤浅).同样小文件的融合就是拆分的逆过程. 在读写文件的过程中我使用的是C++标准库ifstream和ofst

1047: 小A的计算器

1047: 小A的计算器 时间限制: 1 Sec  内存限制: 128 MB提交: 124  解决: 105[提交][状态][讨论版] 题目描述 以往的操作系统内部的数据表示都是二进制方式,小A新写了一个操作系统,系统内部的数据表示为26进制,其中0-25分别由a-z表示.现在小A要在这个操作系统上实现一个计算器,这个计算器要能实现26进制数的加法运算.你能帮小A实现这个计算器吗? 输入 输入的第一行包括一个整数N(1<=N<=100).接下来的N行每行包括两个26进制数x和y,它们之间用空格

洛谷 P2104 二进制

P2104 二进制 题目描述 小Z最近学会了二进制数,他觉得太小的二进制数太没意思,于是他想对一个巨大二进制数做以下 4 种基础运算: 运算 1:将整个二进制数加 1 运算 2:将整个二进制数减 1 运算 3:将整个二进制数乘 2 运算 4:将整个二进制数整除 2 小Z很想知道运算后的结果,他只好向你求助. (Ps:为了简化问题,数据保证+,-操作不会导致最高位的进位与退位) 输入输出格式 输入格式: 第一行两个正整数 n,m,表示原二进制数的长度以及运算数. 接下来一行 n 个字符,分别为‘0

《深入理解计算机系统》2.1信息存储

信息存储 机器级程序将存储器视为一个非常大的字节数组称为虚拟存储器,存储器的每个字节都由一个唯一的数字来标识,称为它的地址,所有可能的地址的集合称为虚拟地址空间这个虚拟地址空间只是一个展现给机器级程序的概念性映像.实际的实现是将随机访问存储器(RAM).磁盘存储器.特殊硬件和操作系统软件结合起来,为程序提供一个看上去统一的字节数组. 进制转换 字 每台计算机都有一个字长,指明整数和指针数据的标称大小.大多数计算机的字长是32位,那么它有2∧32种地址大概刚超过4GB大小,即它的虚拟地址空间最大这

ANDROID Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER

今天测试时,手机已安装了多开助手,再安装我厂自己的应用,安装失败了,报错ANDROID Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER 这是由于环境中已有一个同名的Provider存在. 网查解决方法是修改AndroidManifest.xml中的 <provider android:name="DataProvider"             android:authorities="com.misoo

Protobuf-net 应用

什么是ProtoBuf-net Protobuf是google开源的一个项目,是基于二进制的类似于XML,JSON这样的数据表示语言,用户数据序列化反序列化,google声称google的数据通信都是用该序列化方法.它比xml格式要少的多,甚至比二进制数据格式也小的多.通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持java.c++.python等语言环境.通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序列化工作. pro

Laxcus大数据管理系统2.0(8)- 第六章 网络通信

第六章 网络通信 Laxcus大数据管理系统网络建立在TCP/IP网络之上,从2.0版本开始,同时支持IPv4和IPv6两种网络地址.网络通信是Laxcus体系里最基础和重要的一环,为了能够利用有限的网络资源,获得最大化的使用效率,我们根据大数据网络环境的特点,设计了一套专属网络通信协议,以及在此协议基础上实现的多套网络通信方案,它们共同组成了Laxcus集群的网络通信基础.本章将以TCP/IP协议为起点,介绍与网络通信有关的各个组成部分. 6.1 FIXP协议 Laxcus采用FIXP协议通信

实时同步方式

实时同步方式有以下几种: 轮询(Ajax polling/Ajax long polling) WebSocket Socket.io Wilddog(野狗) WebSocket协议 HTML5新增的一种协议方式 主要特点:是建立客户端与服务端的长连接,从而实现实时数据传输 其他实现实时化的方式 Ajax polling:客户端使用Ajax每隔一定时间向服务端发起一次数据请求.实时性取决于请求的频次,而性能也决定于请求的频次 Ajax long polling:跟Ajax polling的方式类

Unix下网络编程概述

这部分我要学习的是Unix下的网络编程,参照的书籍是W. Richard. Stevens的<Unix网络编程>卷一和卷二,由于本身现在从事的工作是java后台开发,对客户端-服务器的这种通信并不陌生. 学习Unix下网络编程开发不是以后要从事这方面工作,是想学一下计算机网络知识,包括其中各种概念的厘清,和熟悉C编程.网络编程. 网络编程说白了很简单,就是两个对象(机器.应用程序)之间相互通信.通信是一个信息交换的过程,像我们人与人之间交流说话就是一种通信过程,因为几乎每天都会与人交流,导致我